foldrr's weblog

旧ブログ http://d.hatena.ne.jp/foldrr/

PHP mb_ereg() でハマった

mb_ereg() でハマった。
mb_ereg() で半角カタカナの入力チェックをしていたら、環境によってチェックの結果が違った。
具体的には全角カナなのに半角カナと誤認されてしまったり…。
そして↓なページを見つけた。

http://blog.asial.co.jp/181
原因は簡単なことでした。
「mb_regex_encoding」でマルチバイト対応の正規表現を使用される文字エンコーディングの設定が、
使用エンコードと違うため誤動作をしていたみたいです。

というわけで試したらできた!

<?php
$s = "アイウ";
mb_regex_encoding("utf8");
$r = mb_ereg("[ヲ-゚]", $s);
var_dump($r);  // => bool(false)
?>