代码之家  ›  专栏  ›  技术社区  ›  eevaa

使用preg_match_all查找每个单词

  •  0
  • eevaa  · 技术社区  · 11 年前

    我想把每个单词从任何短语中单独提取出来。我还需要匹配特殊字符,例如变音。

    目前,我使用的是:

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

    然而,这给了我多余和空洞的匹配。例如,“zu sp?t”返回

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

    与“任意字母”匹配的正确表达方式是什么?我能对双人和空场比赛做些什么?

    1 回复  |  直到 11 年前
        1
  •  2
  •   Casimir et Hippolyte    11 年前

    你可以试试这个:

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

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

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