PHP置換クイズ!?(mb_ereg_replace)

SE風味

2008年08月25日 16:26

さて問題です。

ある「¥」を含む文字列 (例:[¥]) を置換して、[¥¥] にしたいと思っています。

#あえて、¥は全角で書いていますが、実際には半角です。

そこで、それっぽい置換を4つほど書いてみました。

$original = "[¥¥]";
$a = str_replace("¥¥", "¥¥¥¥", $original);
$b = mb_ereg_replace("¥¥¥¥", "¥¥¥¥¥¥¥¥", $original);
$c = mb_ereg_replace("¥¥¥¥", "¥¥¥¥", $original);
$d = mb_ereg_replace('¥¥', "¥¥¥¥", $original);

print "a= $a¥n";
print "b= $b¥n";
print "c= $c¥n";
print "d= $d¥n";



さて、期待している置換をしてくれるのは、$a ~ $d のうち、どれでしょう。

出力結果

a= [¥¥]
b= [¥¥¥¥]
c= [¥¥]
d=

ちなみに、d ですが、
Warning: mb_ereg_replace(): mbregex compile err: end pattern at escape in question.php・・・

と、エラーを出していました。

正解しました?

で、なぜこうなってしまうか、わかりますか?



・・・なんてことはない、私がはまったんです。


$c って、分かれば納得もするけど、ぱっと見、置換しないように見えるよなー(笑)

関連記事