mbregex compile err: unmatched close parenthesis

プログラムを動かしてたら下記のようなエラーが出るようになった。
Warning: mb_ereg() [function.mb-ereg]: mbregex compile err: unmatched close parenthesis in /usr/home/yousan/hogehoge.php on line 436

該当行ではmb_ereg()が呼ばれている。最初はpatternの文字列が/で挟まれてないせいなのか、とか考えて変更してみたけど、どうやらそうではないらしい。

調べてみるとencodingの文字コード設定がおかしいんじゃないか、とのこと。自分のところで利用している文字コードはUTF-8に併せてある。

さっそくそれぞれを調べてみた。

var_dump(mb_internal_encoding());

var_dump(mb_regex_encoding());

これをやってみると、

string(5) “UTF-8”

string(6) “EUC-JP”

うーん、見事に思ってた結果とは違う。internal_encodingは設定ファイルに書いてあるらしい。mb_regex_encoding()のデフォルトはinternal_encodingが使われるらしい

php.iniを見て見ると、

;mbstring.internal_encoding = EUC-JP

コメントアウトされてるのでこれを修正する。

するとエラーは出なくなった。めでたしめでたし。

コメントを残す