正規表現メモ(2)
問題
正規表現のマッチの結果がおかしい?
答え
UTF-8以外の環境でのマルチバイト文字を使った、
[ ]* ([半角スペース全角スペース]*) とか
[あいうえお]+ とかの正規表現は、
危険だと反射的に思っていいと思います。
例えば、EUC環境で、
preg_match('/[あ]+/', '△△△', $m); var_dump($m);
↓ マッチする
array(1) { [0]=> string(6) "△△△" }
みたいな事が起きます。
理由
EUC-JPの「あ」はa4a2
EUC-JPの「△」はa2a4
EUC-JPの「△△△」はa2a4a2a4a2a4
→ あ(a4a2)が△△△(a2a4a2a4a2a4)にマッチしてしまう
コメント