我使用下面的PHP函數preg_match_all()創建一個包含多個單詞的數組。使用preg_match_all和正則表達式創建一個單詞數組
// the string wich contains the text
$string = "Lorem ipsum dolor sit amet elit";
// the preg_match_all() function
preg_match_all('/([a-z]*?)(?=)/i', $string, $matches);
// debug array
debug($matches[0]);
// output
[(int) 0 => 'Lorem',
(int) 1 => '',
(int) 2 => 'ipsum',
(int) 3 => '',
(int) 4 => 'dolor',
(int) 5 => '',
(int) 6 => 'sit',
(int) 7 => '',
(int) 8 => 'amet',
(int) 9 => ''
]
但是,當我調試或打印的所有字陣列,最後一個字從數組中刪除,在這種情況下,這將是單詞「ELIT」。我怎樣才能解決這個問題?
因爲有在最後一個字之後沒有空格。你爲什麼用延遲匹配來使用lookahead?只需使用'/([a-z] +)/ i'。或匹配整個單詞:'/ \ b([a-z] +)\ b/i'。 –
爲什麼不使用[str_word_count()](http://php.net/manual/en/function.str-word-count.php)格式值爲2 –
@CodeWhisperer我沒有得到相同的結果你是。尋找正則表達式還有更多的錯誤,比如** amet,**不會被捕獲。 – mloureiro