preg_match与php编译失败

时间:2013-06-27 14:57:48

标签: php regex preg-match

我尝试匹配这个表达式:

  

* ^ X-Spam-Flag:是

我使用此代码:

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

但我有这个错误:

  

PHP警告:preg_match():编译失败:无需重复   偏移0

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

3 个答案:

答案 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)))