天涯尽头无女友
我已经在这方面工作了一段时间。评论和 Taha Paksu 非常有效的解决方案有助于帮助我思考问题。除了重音字母之外,Taha Paksu 的解决方案完全隔离了单词。谷歌搜索似乎表明 RegEx 对非 ascii 字符不太友好。正是当我放弃尝试做正则表达式伏都教(任何可以得到我最深切尊重的人)时,我才想到了这个不太优雅的 hack。$text = "Testing text. Café is spelled true. And pokémon too... ‘bad quotes’. (brackets)... Löwen, Bären, Vögel und Käfer sind Tiere. That’s what I said.";$text = str_replace(array('’',"'"), '000AP000', $text);$text = str_replace("-", '000HY000', $text);$text = preg_replace("/[^[:alnum:][:space:]]/u", ' ', $text);$text = str_replace('000AP000', "'", $text);$text = str_replace('000HY000', "-", $text);$text = str_replace(array("' ",'- ',' '," '",' -',' '), ' ', $text);$words = mb_split( ' +', $text );它使用两个统计上不太可能的字符串作为占位符,清理其余的字符串,将连字符和撇号放回原处,然后取出任何接触空格(和多个空格)的东西。它适用于我能找到的所有东西。如果可以,我想找到一个不那么繁琐的解决方案,但我的正则表达式技能可能无法胜任这项任务(即使打开了备忘单)。