2011年5月18日

[PHP-users 35568]意図しない文字置換について

置換結果に関する相談です。

$str = '樫';
$str=str_replace('~','〜',$str);
echo $str;

を実行すると、

Shift-JIS→ 梶`
UTF-8→ 讓ォ

という結果になり、「樫」が違う文字に置換されてしまいます。

これは、Shift-JISの場合、
「樫」の文字コード→ 8A7E
「~」(チルダ)の文字コード→ 7E
という文字コードが原因になります。

そこで、
$str=str_replace('~','〜',$str);
の部分を
$str=mb_ereg_replace ('~','〜',$str);
に変更すると、

Shift-JIS→ 樫
UTF-8→ 讓ォ

となり、Shift-JISでは正しい結果が得られます。
Shift-JISを利用しているので、結果としては問題ないのですが、下記の二点について教えて下さい。
1.この方法で正しいのか?(他に方法はないのか?)
2.UTF-8の場合どうすれば良いのか?

文字に関係しそうなphp.ini設定は以下になります。

[PHP]
magic_quotes_gpc = Off
magic_quotes_runtime = Off
magic_quotes_sybase = Off
default_charset = "Shift_JIS"
extension=php_mbstring.dll

[mbstring]
mbstring.language = Japanese
mbstring.internal_encoding = SJIS
mbstring.http_input = pass
mbstring.http_output = SJIS
mbstring.encoding_translation = On
mbstring.detect_order = auto
mbstring.substitute_character = none

以上、よろしくお願いします。

オカムラ
_______________________________________________
PHP-users mailing list PHP-users@xxxxx
http://ml.php.gr.jp/mailman/listinfo/php-users
PHP初心者のためのページ - 質問する前にはこちらをお読みください
http://oldwww.php.gr.jp/php/novice.php3


投稿者 xml-rpc : 2011年5月18日 15:53
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/103781
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。