PHP:字符串转正则表达式

12

我尝试将字符串用作正则表达式模式,但遇到以下错误

PHP Warning:  preg_match(): Unknown modifier '>' in /Applications/MAMP/htdocs/cruncher/Plugins/wordpress/WPDetect.php on line 22
PHP Warning:  preg_match(): Unknown modifier '/' in /Applications/MAMP/htdocs/cruncher/Plugins/wordpress/WPDetect.php on line 22

这段代码

$str = "<meta name=\"generator\" content=\"WordPress.com\" />"
preg_match("/".$str."/", $content->content)

我也尝试使用 preg_quote 函数,但遇到了类似的问题。

有什么正确的方法可以让它工作吗?

Sultan

4个回答

16

使用 preg_quote 函数并将模式用 |...| 包围起来。

preg_match("|" . preg_quote($str, "|") . "|", $content->content)

好的,抱歉我不知道有时间限制 :) - piotrekkr
1
如果$str包含一个|,这将失败。我的建议是始终提供第二个参数。在这种情况下:'|'.preg_quote($str, '|').'|' - Walter Tross

5
这对我有用。
$pattern = "/" . preg_quote($source, "/") . "/";

0

你必须转义你的限制符

$str = "<meta name=\"generator\" content=\"WordPress.com\" \/>"

0
正则表达式包含一组特殊字符,如\、-、*、.、?、$、^、+、()、[]等,您在使用字符串之前必须从中转义它们(通过在字符前添加\来进行转义)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接