2013-10-17 60 views
0

我想從任何詞組中單獨提取每個詞。我還需要匹配特殊字符,例如元音變音。使用preg_match_all查找每個詞使用preg_match_all

目前,我用這個:

preg_match_all('/\b([a-zA-ZäöüåÄÖÜÅ]*)\b/', $string, $matches); 

然而,這給了我多餘的,空的匹配。例如,「zuspät」返回

Array ([0] => Array ([0] => zu [1] => [2] => spät [3] =>) 
     [1] => Array ([0] => zu [1] => [2] => spät [3] =>)) 

什麼是匹配「任何字母」的正確表達式?我能做些什麼關於雙空比賽?

+0

也許你應該嘗試unicode等同於特殊字符。不確定其實施。快速谷歌可能工作。 – 2013-10-17 16:58:34

回答

2

你可以試試這個:

preg_match_all('/\b\p{L}+\b/u', $string, $matches); 

\p{L}任何字母相匹配。

在您的代碼示例中,您將獲得「雙倍」結果:第一個是整個模式,第二個是捕獲組。這就是我刪除捕獲組的原因。 爲了避免出現空的結果,我用+量詞(一次或多次)替換了*量詞(零次或多次)。