应该使用preg_replace替换哪些字符进行转义

时间:2015-12-03 21:36:17

标签: php regex preg-replace

我注意到当替换有\时,该函数将无法按预期工作。所以我应该逃避反斜杠。

应该转义哪些其他角色?我没有找到任何文件。

我不能使用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>

3 个答案:

答案 0 :(得分:0)

\002是一个八进制数字,当在windows终端上呈现时会显示一个小笑脸☻然后来自\0020的尾随0。在浏览器中查看时,您只看到尾随0。有关转义序列,请参阅Double quoted字符串。要使用双引号,您需要使用此\\\\0020

您还可以使用Single quoted字符串或Nowdoc

如果您从其他地方读取此字符串,则可以使用addslashes()

答案 1 :(得分:-1)

如果您尝试匹配字符

,则应转义以下内容
\ ^ . $ | ( ) [ ]     * + ? { } ,

答案 2 :(得分:-1)

您正在寻找的文档位于:Meta-characters。这些是你可以在正则表达式中使用的特殊字符,这意味着如果你需要逐字搜索它们,你需要逃避它们。

相关问题