0

我尝试匹配这个表达式:

* ^X-垃圾邮件标志:是

我使用这段代码:

if(preg_match('\'* ^X-Spam-Flag: YES\'', $value))

但我有这个错误:

PHP 警告:preg_match():编译失败:在偏移量 0 处没有可重复的内容

正则表达式和 * 和 ^ 有问题,但我可以纠正吗?

4

3 回答 3

1

您缺少分隔符。

改成:

preg_match('#\'* ^X-Spam-Flag: YES\'#', $value)

或者你可能需要:

preg_match('#\* \^X-Spam-Flag: YES#', $value)
于 2013-06-27T15:00:03.133 回答
1

你接近解决方案,你必须逃避^*因为这些在正则表达式模式中具有特殊含义:

if(preg_match('\'\* \^X-Spam-Flag: YES\'', $value))

如果您的转义单引号看起来很奇怪,最好用/or ~... 代替,但是这些可以用作分隔符。

此处有关分隔符的更多信息:http ://www.php.net/manual/en/regexp.reference.delimiters.php

于 2013-06-27T15:16:27.773 回答
0

要安全地转义正则表达式特殊字符,您可以简单地使用“preg_quote()”,它会在这些字符前面添加反斜杠。

if(preg_match('\'* ^X-Spam-Flag: YES\'', preg_quote($value)))
于 2017-05-29T07:28:32.977 回答