2011-10-20 52 views
1

我有一個數組,並希望檢索只有5個字母的單詞,什麼都不長,我曾嘗試使用正則表達式匹配的只有5個字母的單詞

$new = preg_grep("/.{5}/", $array); 

但導致至少是5個字母的單詞長。我想要任何最多5個字母的單詞。

回答

4

您需要使用開始(^)和結尾($)改性劑,所以

$new = preg_grep("/^.{5}$/", $array); 

然而,更高效可能只是做一個strlen基於過濾器:

function len5($v){ 
    return strlen($v) == 5; 
} 
$new = array_filter($array, 'len5'); 
0

你的問題不明確。你想是只有 5個字母,或最多 5個字母長的單詞。這是兩件獨立的事情。

對於前者:

$new = preg_grep("/^.{5}$/", $array); 

對於後者:

$new = preg_grep("/^.{1,5}$/", $array); 

^$錨分別標記行的開始和結束。如果您沒有標記,則會匹配abcdef之類的詞,因爲abcde將與您的正則表達式匹配。要指定您要匹配整個字符串,而不是字符串的只是一部分。

0

添加啓動(^)和結束($)標記:

$new = preg_grep("/^.{5}$/", $array); 
2

使用下面的正則表達式從1到5個字符匹配的話。 \b是一個字邊界

/\b\w{1,5}\b/ 
相關問題