正規表現で予約された文字をバックスラッシュでエスケープしようとしています(質問しないでください。HTMLを解析しようとしていないと言えば十分です:))そして奇妙なことが起こっています。
$regex_chars = array('[' , '\\' , '^', '$' , '.' , '|' ,
'?' , '*' , '+' , '(' , ')');
$regex_chars_escaped = array('\[ ' , '\\\\ ' , '\^ ', '\& ' ,
'\. ' , '\| ' , '\? ' , '\* ' , '\+ ' , '\( ' , '\)');
$escaped_string = str_replace($regex_chars,$regex_chars_escaped,
implode("",$regex_chars));
echo implode(' ',$regex_chars) . "<br />";
echo $escaped_string;
スペースはわかりやすくするためのものです。これが出力です
[ \ ^ $ . | ? * + ( )
\\ [ \\ \^ \& \. \| \? \* \+ \( \)
したがって、最初の部分を除いて、すべてが良好です。「\\」はどこから来たのですか、なぜ「\ [」ではないのですか?