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