使用preg_match_all查找每个单词

时间:2013-10-17 16:55:53

标签: php regex 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] => ) ) 

匹配“任何字母”的正确表达是什么?我怎么办关于双击和空比赛?

1 个答案:

答案 0 :(得分:2)

你可以试试这个:

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

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

在您的代码示例中,您获得“double in”结果:第一个是整个模式,第二个是捕获组。这就是我删除捕获组的原因。 为了避免空结果,我已将*量词(零次或多次)替换为+量词(一次或多次)。