<?php
$s = 'あい\\\\うえお';
$re = '/\\\\/';
$rep = '>>match!<<';
$count = 0;
var_dump($s);
preg_match($re, $s, $matches);
var_dump($matches);
//=> array(1) {
// [0]=>
// string(1) "\"
// }
var_dump(preg_replace($re, $rep, $s, $count));
//=> string(17) "あい\\うえお"
var_dump($count);
//=> int(0)
?>
preg_match()ではマッチしているようです。
しかし、同じ正規表現を用いた preg_replace() では置換が行われません。
なぜ置換が行われないのでしょうか?
//間違い var_dump(preg_replace($re, $rep, $s, $count)); //正しい var_dump(preg_replace($re, $rep, $s, -1, $count));
preg_replace の第4引数は置換回数の上限です。置換回数の取得用変数の指定は5番目。
置換回数の上限を0としているので、置換されなくて当然です。
ありがとうございます!!
1時間以上テスト繰り返してました(TT)
ご名答でした。