2013-06-27 39 views
0

我尝试匹配这个表达式:我用这个代码是的preg_match用PHP编译失败

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

但我

*^X-Spam-Flag标有这个错误:

PHP警告:preg_matc h():编译失败:没有重复的地址 偏移量0

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

+0

您需要分隔符。试试:'if(preg_match(“/ \ * \^X-Spam-Flag:YES/i”,$ value))' –

+0

@RobW不工作 – mpgn

+0

对我来说工作很好.. http://phpfiddle.org/main/code/r8y-p52 –

回答

1

您错过了您的分隔符。

更改为:

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

或者,也许你需要:

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

需要逃脱^^ –

+0

也逃不过第一个作品的星号'*' – x4rf41

+0

;) – mpgn

1

你是在解附近,你要逃跑^*因为这些有一个正则表达式特殊的意义:

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

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

更多信息关于这里的分隔符:http://www.php.net/manual/en/regexp.reference.delimiters.php

0

为了安全逃离正则表达式的特殊字符,你可以简单地使用“preg_quote()”,其中增加了反斜杠字符前面。

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