ショコラ
PHP mb_ereg で同じ文字列なのにマッチしない
カッコが含まれている可能性が高いです。
サンプルをみてみましょう。
もっさん先輩
まず、同じ文字列の↓こちら。マッチします。
<?php
$a = "もっさん";
echo mb_ereg($a,$a);
↓スペースが入ってもマッチします。
<?php
$a = "もっさん ショコラ";
echo mb_ereg($a,$a);
それで、問題の↓こちら
<?php
$a = "もっさん(イケメン)";
echo mb_ereg($a,$a);
同じ文字列ですが、この結果は false になります。
理由は、文字列の中に半角括弧があるからです。
この半角括弧をエスケープするのが↓下の方法になります。
<?php
$a = "もっさん(イケメン)";
$b = $a;
$a = mb_ereg_replace('\\(','\\(',$a);
$a = mb_ereg_replace('\\)','\\)',$a);
echo mb_ereg($a,$b);
↑「mb_ereg_replaceで何にも置換していないじゃん!」と見えますが、こちらエスケープできています。
結果は true になります。
以上