我的一个正则表达式引发了警告,我无法弄清楚为什么或如何更改表达式以使其正常工作。 我必须逃避任何事吗?如果是,为什么以及如何?我想更好地理解......
$output = preg_split("/($beginDelimiter|$endDelimiter)/", $text);
PHP Warning: preg_split(): Compilation failed: missing ) at offset 15 in /home/tim/importer.php on line 539
感谢您的帮助!
编辑:
$ beginDelimiter包含SRF53
$ endDelimiter包含(
第二个必须是问题,我明白......它需要被转义。
答案 0 :(得分:1)
使用preg_quote
,因为您的变量包含需要在regex
中转义的特殊字符。
preg_quote()
接受字符串并在作为正则表达式语法一部分的每个字符前放置一个反斜杠。如果您有一个需要在某些文本中匹配的运行时字符串,并且该字符串可能包含特殊的正则表达式字符,这将非常有用。
$output = preg_split("/(".preg_quote($beginDelimiter)."|".preg_quote($endDelimiter)."/", $text);