我正在编写一个小型网络应用程序来管理外部作家的文本,实际上整个事情很棒,但我遇到了一个小问题。它与单词counter相关。
作者将根据文本中的单词数付费,文本中包含html标签。但问题是使用了德语字符(Ä,Ö,Ü,ß)
所以在第一个位置我删除了标签
$content = strip_tags($content);
然后我用简单的空格替换新的线条和标签
$replace = array("\r\n", "\n", "\r", "\t");
$content = str_replace($replace, ' ', $content);
最后我试着获得单词数
方法1:
$characterMap = 'ÄÖÜäöü߀';
$count = str_word_count($content, 0, $characterMap);
方法2:
$to_delete = array('.', ',', ';', "'", '@');
$content = str_replace($to_delete, '', $content);
$count = count(preg_split('~[^\p{L}\p{N}\']+~u',$content));
但结果与Word中的结果或CKEditor插件word_count的结果不同。
例如,对于示例文本
Word和CkEditor字数统计987字
方法1:968字
方法2:995字
问题是第二种方法只是 - 单词的分隔符,但我的问题是,是否有更好的方法来查找php中文本中的单词数量?
答案 0 :(得分:1)
首先,您可以将两个替换语句合并为一个 - 单词计数将忽略双倍空格。其次,我不确定你的正则表达式的目标是什么,但它看起来很奇怪。
你应该能够做到这一点:
$content = strip_tags($content);
$replace = array("\r\n", "\n", "\r", "\t", '.', ',', ';', "'", '@');
$content = str_replace($replace, ' ', $content);
$count = str_word_count($content, 0, $characterMap);
答案 1 :(得分:0)
您可以尝试查看str_word_count,看看它是否与您当前的解决方案相匹配。
http://php.net/manual/en/function.str-word-count.php
使用的一个例子是
$Tag = 'My Name is Gaurav';
$word = str_word_count($Tags);
echo $word;
答案 2 :(得分:0)
这可能会为方法2提供更好的近似值:
$string = "He€.llo, ho-w€d9 € are you? fi€ne ÄÖÜäöü߀, and 'ÄÖÜäöü߀ you?";
$words = preg_split
( '/[^\p{L}\p{N}]*\p{Z}[^\p{L}\p{N}]*/u',
$string
);
print( "count = " . count($words) . "\n\n" );
print_r($words);