PHP mb_ereg で同じ文字列なのにマッチしない

ショコラ
ショコラ

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 になります。

以上

Scroll to Top