マルチバイト文字列をmb_ereg_replace()
機種依存文字の対応をした際にmb_ereg_replace()が正しく動作しなかったときのメモ。 機種依存文字を置換する処理を入れようとすると最初の一文字しか置換されませんでした。 どうやらも文字コードの問題で、マルチバイトの文字列がちゃんと扱われてなかったようです。 mb_regex_encoding('utf-8')で文字コードを指定してあげるとちゃんと変換されました! <?php $str = '①②③④⑤' $list = array( '①' => '(1)', '②' => '(2)', '③' => '(3)', '④' => '(4)', ); mb_regex_encoding('utf-8'); foreach($list as $key => $value) { $str = mb_ereg_replace($key, $value, $str); } echo $str; ?>
【参考URL】 http://centlize.jp/?p=214 http://www.otchy.net/20090128/php-chartype-judgment-in-utf8/













