[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 メーリングリストの案内