我注意到当替换有\
时,该函数将无法按预期工作。所以我应该逃避反斜杠。
应该转义哪些其他角色?我没有找到任何文件。
我不能使用preg_quote()
因为它用于转义模式而不是替换。
再次编辑:以下是single quote
的示例,其中显示了反斜杠如何导致问题:
$replacement = '<head>content \0020 content</head>';
$subject = "<head>any header </head>";
$html_text = preg_replace ( "%<head>.*?</head>%s", $replacement, $subject, - 1, $count );
die ( $html_text );$subject, - 1, $count );
echo $html_text;
以上示例应打印:<head>content \0020 content</head>
。但它是打印<head>content <head>any header </head>20 content</head>
答案 0 :(得分:0)
\002
是一个八进制数字,当在windows终端上呈现时会显示一个小笑脸☻然后来自\0020
的尾随0。在浏览器中查看时,您只看到尾随0。有关转义序列,请参阅Double quoted字符串。要使用双引号,您需要使用此\\\\0020
。
您还可以使用Single quoted字符串或Nowdoc。
如果您从其他地方读取此字符串,则可以使用addslashes()
。
答案 1 :(得分:-1)
如果您尝试匹配字符
,则应转义以下内容\ ^ . $ | ( ) [ ] * + ? { } ,
答案 2 :(得分:-1)
您正在寻找的文档位于:Meta-characters。这些是你可以在正则表达式中使用的特殊字符,这意味着如果你需要逐字搜索它们,你需要逃避它们。