2014-07-11 57 views
0

我有一個數據庫的設置與正則表達式模式傳遞給preg_match,但它可以是空的,導致//並傳遞給preg_match與任何字符串進行匹配。爲什麼preg_match與空模式總是匹配

例如:

$m = preg_match('//', 'something'); 
echo $m 
// output: 1 

爲什麼這種行爲,以及如何解決方法嗎?

+3

不知道*爲什麼*,但如果你使用'/^$ /',你應該只能匹配空白值。 – esqew

+1

當然,它會匹配任何東西。如果你想匹配空字符串,然後使用錨''/^$ /'' – anubhava

+0

我已經將包含解決方案的編輯回滾到問題中。如果你認爲你自己的解決方案增加了一些東西,然後將它作爲答案發布,另請參閱http://meta.stackoverflow.com/questions/262806/is-it-ok-for-users-to-edit-the-accepted-回答 - 到 - 他們-問題 –

回答

3

//模式對可以匹配的內容沒有限制,所以一切都匹配。

您可以使用模式/^$/(字符串的開頭緊接着是字符串的結尾)。

你可以測試你傳遞的模式是否是//