2013-06-27 94 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)))