在不久的将来有一段时间,我将需要实现跨语言字数,或者如果不可能,则跨语言字符数.
通过单词计数,我的意思是给定文本中包含的单词的准确计数,以文本的语言为准.文本的语言由用户设置,并被认为是正确的.
按字符计数我是指包含在给定文本中的“可能在一个字”字符中的计数,具有与上述相同的语言信息.
我更喜欢以前的计数,但我意识到所涉及的困难.我也知道,后者的数量要容易得多,但是如果可能的话,非常喜欢前者.
如果我只是看英文,我会很喜欢,但我需要考虑中文,韩文,英文,阿拉伯文,印度文等各种语言.
我想知道Stack Overflow是否有任何潜在客户在哪里开始寻找现有的产品/方法在PHP中执行此操作,因为我是一个很好的懒惰程序员*
A simple test显示了set_locale的str_word_count如何不起作用,以及来自PHP.net的str_word_count页面的函数.
计数字符很容易:
echo strlen('一个有十的字符的句子'); // 30 (WRONG!) echo strlen(utf8_decode('一个有十的字符的句子')); // 10
计数字是事情开始变得棘手的地方,特别是中文,日文和其他不使用空格(或其他常见的“边界”字符)的语言作为单词分隔符.我不会说中文,我不懂中文的字数如何,所以你必须教育一下 – 这些语言有什么用词?是否有任何特定的字符或一组字符?我记得阅读有关在T9写作中识别日语单词有多困难的东西,但是找不到它.
以下内容应正确返回使用空格或标点符号作为单词分隔符的语言的单词数:
count(preg_split('~[\p{Z}\p{P}]+~u',$string,null,PREG_SPLIT_NO_EMPTY));