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

发布于 2024-12-02 19:47:14 字数 326 浏览 1 评论 0原文

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

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

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

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

这个 我正在寻找什么但还不知道?

I have a website that people enter lists of words into.

These lists of words could be written in any language in the world.

How can I extract these lists of words from their input data if I do not know what language they are entering?

Is there some kind of match-all international alphabet symbol I am missing, or do I have to manually write up a set of brackets that will match every possible international letter?

Is this what I am looking for and just don't know it yet?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

蓝眼泪 2024-12-09 19:47:14

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

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

[\ p{L}\p{Pc}]+ 为您提供字母和连接标点符号。您可以将其缩短为 \pL+
不管怎样,你都想更好地定义“词”。它可能不仅仅是一些字母的序列......

You can use Unicode character properties, for example:

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

[\p{L}\p{Pc}]+ gives you letters and connector punctuation. You can shorten that to \pL+.
Either way, you'd want to define "word" better. It is probably more than a sequence of some letters...

流年里的时光 2024-12-09 19:47:14

我的建议是定义您自己的输入约定 - 强制他们一次输入一个单词,或者在文本框中每行输入一个单词。否则,你将需要为每个脚本提供一个分割算法(当然,对于绝大多数脚本来说,这将是一些微不足道的事情,比如“分割具有 Unicode 单词分隔符属性的字符”,但剩下的特殊情况基本上仍然是开放的人工智能研究主题)。

My recommendation is to define your own input convention - force them to input one word at a time, or one word per line in a textbox. Else, you will need a segmentation algorithm for each script (granted, it will be something trivial like "split on characters which have the Unicode word separator property" for the vast majority of scripts, but the remaining special cases are basically still open AI research topics).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文