php – 使用str_word_count作为UTF8文本

前端之家收集整理的这篇文章主要介绍了php – 使用str_word_count作为UTF8文本前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有这个文字
$text  = "Başka,küskün otomobil kaçtı buraya küskün otomobil neden kaçtı
          kaçtı buraya,oraya KISMEN @here #there J.J.Johanson hep.
          Danny:Where is mom? I don't know! Café est weiß for 2 €uros.
          My 2nd nickname is mike18.";

最近我在用这个.

$a1= array_count_values(str_word_count($text,1,'ÇçÖöŞşİIıĞğÜü@#é߀1234567890'));
arsort($a1);

你可以检查这个小提琴:
http://ideone.com/oVUGYa

但是这个解决方案并不能解决所有的UTF8问题.我不能将whole UTF8 set写入str_word_count作为参数.

所以我创建了这个:

$wordsArray = explode(" ",$text);
foreach ($wordsArray as $k => $w) {
    $wordsArray[$k] = str_replace(array(",","."),"",$w);
}
$wordsArray2 = array_count_values($wordsArray);
arsort($wordsArray2);

输出应该是这样的:

Array (
 [kaçtı] => 3
 [küskün] => 2
 [buraya] => 2
 [@here] => 1
 [#there] => 1
 [Danny] => 1
 [mom] => 1
 [don't] => 1
 [know] => 1
 ...
 ...
)

这很好,但并不涵盖所有的句子问题.例如,我用str_replace删除逗号和点.

例如,这个解决方案不包括这样的话:你好,你好吗?迈克,怎么不会被视为不同的话.

这在str_word_count解决方案中没有涵盖:KISMEN @here #there.在短划线上,不会被考虑.

这不包括J.J.Johanson.虽然这是一个字,它将被视为JJJohanson

问题,感叹号应该被删除.

有没有更好的方法来获得支持UTF8的str_word_count行为?在这个问题的顶部存在的$文本是我的参考.

(如果你能提供一个小提琴你的答案会更好)

因为字数概念在某些语言中不存在或太难,所以你永远不会有一个完美的字数解决方案. UTF8没有关系.

日语和汉语不是空间象征主义语言.他们甚至没有一个静态单词列表,你必须在查找动词和名词前阅读整个句子.

如果要支持多种语言,则需要使用语言特定的tokenizer引擎.您可以研究全文索引,tokenizer,CJK-tokenizer,CJK-analyzer来获取更多信息.

如果您只想支持有限的选定语言,那么只需改进您的正则表达式模式就越来越多.

猜你在找的PHP相关文章