2013-09-26 43 views
1

下返回true:轉義字符在PHP

$bool1 = preg_match("/5/", "Your bill is $5.00 dude"); 
var_dump($bool1); 

我想到這一點,因爲 '5' 是string.But以下返回false:

$bool1 = preg_match("/\$5\./", "Your bill is $5.00 dude"); 
var_dump($bool1); 

我想我正確地轉義了$,這樣它會在字符串中查找$5並找到它,但沒有。有人可以解釋嗎?謝謝。

+2

preg_quote()可用於在正則表達式轉義特殊字符;但是用單引號而不是雙引號包裝正則表達式,否則在傳遞給正則表達式解析器之前,PHP會自行進行一些轉義:'$ bool1 = preg_match('/ \ $ 5 \ ./',「您的賬單是$ 5.00花花公子「);' –

+0

值得注意的是,preg_quote只是做了他手動的操作。這不是他問題的根源。編輯:在這裏留下我的評論,但最初大家只是說「只是使用preg_quote」,它並沒有回答這個問題。 – Mike

+1

@Mike _almost_。 preg_quote會返回''\ $'',他使用'「\ $」':) – JimiDini

回答

3

使用單引號,以防止PHP錯誤地解釋任何轉義:

$bool1 = preg_match('/\$5\./', "Your bill is $5.00 dude"); 
1

您應該使用preg_quote()函數不正確的逃逸

+1

您的直接錯誤是,您使用雙引號,所以斜槓首先用於PHP本身的特殊符號轉義。你可以通過使用雙斜線來修復它。但總是使用'preg_quote()'更好,因爲可能會出現更復雜的情況 – JimiDini

0
$bool1 = preg_match('/\$5\./', "Your bill is $5.00 dude"); 
var_dump($bool1);