我正在尝试通过对样式和主题使用preg_quote来进行preg_match。 问题是preg_match似乎与它们不匹配。
我删除了preg_quote,它与我匹配得很好。 我通过preg_quote主题和消息来查看输出内容,它们完全相同,但是preg_match似乎与它们不匹配。 在某些情况下,我需要使用preg_quote。
$message = "My two great things in life are spaghetti and bolognese Order yours #online from Ammou Pizza in Limassol!
foody.com.cy/ammou-pizza";
if(preg_match('#' . preg_quote("ammou-pizza") . '#', preg_quote($message)))
echo 'here';
我希望输出为“ here”,但实际输出仅为退出代码0。
答案 0 :(得分:1)
您不应在要搜索的主题中使用preg_quote($message)
作为原始文本。这仅是为了确保任何文本都是有效的正则表达式。如果您回显此结果,则会得到...
My two great things in life are spaghetti and bolognese Order yours #online from Ammou Pizza in Limassol\!
foody\.com\.cy/ammou\-pizza
,如您所见,它已编码ammou\-pizza
。这不是您想要的,仅需要\-
序列,因为-
意味着与正则表达式不同的东西,而不是简单的破折号。
只需使用...
if(preg_match('#' . preg_quote("ammou-pizza") . '#', $message))
答案 1 :(得分:1)
preg_quote
在这里没有用,因为您的正则表达式中没有特殊字符,请使用:
if ( preg_match('#ammou-pizza#', $message) )
echo 'here';
对于您来说,preg_match
的使用不是强制性的,最好使用[strstr][1]
,因为您想找到一个简单的字符串,它的效率要高得多:
if (strstr('ammou-pizza', $message) )
echo 'here';