我尝试匹配这个表达式:
* ^X-垃圾邮件标志:是
我使用这段代码:
if(preg_match('\'* ^X-Spam-Flag: YES\'', $value))
但我有这个错误:
PHP 警告:preg_match():编译失败:在偏移量 0 处没有可重复的内容
正则表达式和 * 和 ^ 有问题,但我可以纠正吗?
我尝试匹配这个表达式:
* ^X-垃圾邮件标志:是
我使用这段代码:
if(preg_match('\'* ^X-Spam-Flag: YES\'', $value))
但我有这个错误:
PHP 警告:preg_match():编译失败:在偏移量 0 处没有可重复的内容
正则表达式和 * 和 ^ 有问题,但我可以纠正吗?
您缺少分隔符。
改成:
preg_match('#\'* ^X-Spam-Flag: YES\'#', $value)
或者你可能需要:
preg_match('#\* \^X-Spam-Flag: YES#', $value)
你接近解决方案,你必须逃避^
,*
因为这些在正则表达式模式中具有特殊含义:
if(preg_match('\'\* \^X-Spam-Flag: YES\'', $value))
如果您的转义单引号看起来很奇怪,最好用/
or ~
... 代替,但是这些可以用作分隔符。
此处有关分隔符的更多信息:http ://www.php.net/manual/en/regexp.reference.delimiters.php
要安全地转义正则表达式特殊字符,您可以简单地使用“preg_quote()”,它会在这些字符前面添加反斜杠。
if(preg_match('\'* ^X-Spam-Flag: YES\'', preg_quote($value)))