我注意到当替换文本中有
还有哪些字符需要转义?我没有成功找到任何文档。
由于
上面的示例应该打印:
\
字符时,该函数将不能按预期工作。因此我应该转义反斜杠。还有哪些字符需要转义?我没有成功找到任何文档。
由于
preg_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>
。
\0020
,这在 PHP 中被视为一个八进制数。 - Marc B</head>
不存在且字符串非常长时会发生。但是,非贪婪量词的想法是在获取每个字符之前测试模式的结尾。贪婪量词获取所有可能的字符,并返回一些字符(回溯),直到匹配成功为止。 - Casimir et Hippolyte