【发布时间】:2010-12-19 20:24:16
【问题描述】:
我正在尝试用反斜杠转义正则表达式保留的字符(不要问——只要说我不尝试解析 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;
空格是为了清楚起见。这是输出
[ \ ^ $ . | ? * + ( )
\\ [ \\ \^ \& \. \| \? \* \+ \( \)
所以一切都很好,除了第一部分。 "\\" 是从哪里来的,为什么不是 "\[" ?
【问题讨论】:
标签: php regex str-replace