[PHP-users 21761]Re: preg_replaceで文字化け
Seiji Masugata
s.masugata @ digicom.dnp.co.jp
2004年 5月 21日 (金) 12:52:28 JST
こんにちわ、桝形です。
> しかし、preg_replaceで置換した場合、
> とある文字列だけ化けてしまうことがあるようです。
>
> 原因の箇所のサンプルプログラムを載せます。
> ------------------------------------------------------------
> <?php
> header("Content-type: text/html;charset=EUC-JP");
> $test_data0 = "宮城県刈田郡蔵王町円田(釜沢、善舞森、土浮谷地、";
> echo preg_replace("/(.*/",null,$test_data0)."<br>\n";
> $test_data1 = "宮城県岩沼市押分";
> echo preg_replace("/(.*/",null,$test_data1)."<br>\n";
> ?>
> ------------------------------------------------------------
Perl互換の正規表現関数は、そのままではマルチバイトを
考慮しません。
"押分" → "b2a1caac"
^^^^
"(" → "a1ca"
正規表現のコードをマルチバイトを考慮した形で書くか
mb_ereg_replaceを利用していはいかがでしょうか。
--
Seiji Masugata<s.masugata @ digicom.dnp.co.jp>
PHP-users メーリングリストの案内