如何在任何可能的语言中preg_match_all一组单词


How to preg_match_all a set of words in any possible language?

我有一个网站,人们可以在里面输入单词列表。

这些单词列表可以用世界上任何一种语言书写。

如果我不知道他们输入的是什么语言,我如何从他们的输入数据中提取这些单词列表?

是否缺少某种匹配所有国际字母符号,或者我必须手动编写一组括号来匹配每个可能的国际字母?

这个我正在寻找,只是不知道它吗?

可以使用Unicode字符属性,例如:

preg_match_all('#['p{L}'p{Pc}]+#u', $str, $matches);

['p{L}'p{Pc}]+给出了字母和连接符号。你可以把它缩短为'pL+
无论哪种方式,你都想更好地定义"单词"。它可能不仅仅是一些字母的序列……

我的建议是定义您自己的输入约定—强制他们一次输入一个单词,或者在文本框中每行输入一个单词。否则,你将需要为每个脚本一个分割算法(当然,对于绝大多数脚本来说,它将是一些微不足道的东西,比如"对具有Unicode单词分隔符属性的字符进行分割",但其余的特殊情况基本上仍然是开放的AI研究主题)。