在不久的将来,我将需要实现跨语言的字数统计,或者如果不可能的话,实现跨语言的字符数统计。
我所说的单词计数是指对给定文本中包含的单词进行准确的计数,包括文本的语言。文本的语言由用户设置,并且将被认为是正确的。
我所说的字符计数是指包含在给定文本中的“可能在一个单词中”的字符的计数,具有上述相同的语言信息。
我更喜欢以前的伯爵,但我知道其中的困难。我也知道后者要容易得多,但如果可能的话,我更喜欢前者。
如果我只看英语就好了,但我需要考虑这里的每一种语言,中文、韩语、英语、阿拉伯语、印地语等等。
我想知道Stack Overflow是否有任何线索,知道从哪里开始寻找现有的产品/方法来在PHP中做到这一点,因为我是一个优秀的懒惰程序员*。
A simple test展示了带有set_locale的str_word_count是如何不工作的,还有一个来自php.net的str_word_count页面的函数。
发布于 2010-06-16 21:04:30
计算字符很简单:
echo strlen('一个有十的字符的句子'); // 30 (WRONG!)
echo strlen(utf8_decode('一个有十的字符的句子')); // 10
计算单词是事情开始变得棘手的地方,特别是对于中文、日语和其他不使用空格(或其他常见的“单词边界”字符)作为单词分隔符的语言。我不会说中文,我也不明白中文中的单词统计是如何工作的,所以你得教我一点--在这些语言中,单词是由什么组成的?是否有任何特定的字符或字符集?我记得读过一些关于在T9中识别日语单词有多难的文章,但现在找不到了。
以下代码应正确返回使用空格或标点符号作为单词分隔符的语言中的单词数:
count(preg_split('~[\p{Z}\p{P}]+~u', $string, null, PREG_SPLIT_NO_EMPTY));
发布于 2019-07-22 02:21:48
如果您只想要近似而不是精确的单词,那么有一个小窍门:
<?php echo count(explode(' ',$string)); ?>
它通过计算任何语言中的空格来工作。我已经将其用于翻译器脚本。同样,它不会计算精确的单词,而是在段落中给出近似的单词。
发布于 2010-05-30 04:56:43
好吧,试一试:
<?
function count_words($str){
$words = 0;
$str = eregi_replace(" +", " ", $str);
$array = explode(" ", $str);
for($i=0;$i < count($array);$i++)
{
if (eregi("[0-9A-Za-zÀ-ÖØ-öø-ÿ]", $array[$i]))
$words++;
}
return $words;
}
echo count_words('This is the second one , it will count wrong as well" , it will count 12 instead of 11 because the comma is counted too.');
?>
https://stackoverflow.com/questions/2935544
复制相似问题