- ベストアンサー
全角の”’¥を半角に変換したい
PHPを勉強し始めた超初心者です。よろしくお願いいたします。 表題のとおり、PHPにて全角の”’¥を半角の"'\に変換したいのですが、うまくできません。 ----- A ----- $s = "”’¥"; mb_convert_kana( $s, "as" ); 結果:全て全角のまま。 ----- B ----- $s = "”’¥"; $s = mb_ereg_replace( '”', '"', $s ); $s = mb_ereg_replace( '’', '\'', $s ); $s = mb_ereg_replace( '¥', '\\', $s ); 結果:”’は半角になるんですが、¥は半角になりません。 なにか根本的に間違いがあるんでしょうか? あともう一つ、日本語環境について、 mb_language( "Japanese" ); mb_internal_encoding( "EUC-JP" ); mb_regex_encoding( "EUC-JP" ); mb_substitute_character( "none" ); mb_detect_order( "SJIS,EUC-JP,JIS,UTF-8,ASCII" ); と、ソースに指定しているのですが、ローカル環境がWindowsなので、ソースそのものはSJISになっていると思います。(コード体系管理できないテキストエディタ使用) しかしこれをそのままサーバーにアップしても、問題なく(文字化け等無く)print"サシスセソラリルレロ"; なども表示されるんですが、これはこれでいいんでしょうか? 以上、よろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
$s = "¥"; echo str_replace("¥","\\",$s); echo ereg_replace("¥","\\",$s); こんなのでいいんじゃないでしょうか? mb_internal_encoding( "EUC-JP" ); mb_regex_encoding( "EUC-JP" ); これがなければmb_ereg_replaceでも動作すると思います。 mbstring系の関数は内部文字コードを見て判断するので、実際はSJISで書いているのに内部文字コードはEUCと設定されているような場合おかしな挙動になると思います。 文字コードを指定できるフリーソフトはいくらでもあるので、まずはエディタを用意することから始めた方がいいのではないでしょうか? SJISはプログラムを書くには何かと不便だと思いますよ。 また、文字コードをSJISで書くのであればmb_internal_encodingなどはSJISにした方がいいと思います。 ぱっと見動いているように見えて、実は稀に文字化けしてたなんてことが出てくると思います。
その他の回答 (1)
- shimix
- ベストアンサー率54% (865/1590)
>コード体系管理できないテキストエディタ使用 web系のプログラムを書くのに文字コードが{指定|変換}できないエディタを使うのは無謀だと思います。適切なエディタを選択してください。
お礼
ありがとうございます。 文字コードを変換できるエディタ、もちろんそれを使うのが正しいアプローチであろう事はよくわかります。指摘いただいたように、最終的にはそうしようと思います。 ところで、これらも含め、日本語の扱い方にまだまだ疑問があるんですが、ここにそれを書くよりも、新たに質問を起こそうと思います。もしその質問が目に止まり、かつ、お時間がございましたらまたアドバイスよろしくお願いいたします。
お礼
お返事ありがとうございます。 指摘いただいたように、EUC-JP → SJIS とする事で、確かに解決できました。ありがとうございます。 ところで、これらも含め、日本語の扱い方にまだまだ疑問があるんですが、ここにそれを書くよりも、新たに質問を起こそうと思います。もしその質問が目に止まり、かつ、お時間がございましたらアドバイスよろしくお願いいたします。