PHP 仿 Word 统计文章字数
function comment_count_word($str){
$str = preg_replace('/[\x80-\xff]{1,3}/', ' ', $str,-1,$n);//匹配中文或中文下的符号
$str = preg_replace('/[-\_\.!@#\$%\\\^&\*\)\(\+=\{\}\[\]\/",\'<>~\·`\?:;|]/', ' ', $str,-1,$j);//匹配英文下的符号
$n+=$j;
$n += str_word_count($str);
if(preg_match('/\d+/',$str)){
preg_replace('/\d+/', ' ', $str,-1,$i);
$n+=$i;
}
return $n;
}
该方法统计的字数大概和word一致,因为word统计字数,相连的英文和数字(半角)会计算成一个字,如all1234
就会统计成一个字。由于我没想到这到底是是怎么一个算法,所以我这边就没法搞了。如果有大佬知道这么搞,求讲解!
以下的代码,是新搞出来的,经过测试,和word统计出来的一致,也没有上面的问题了,但是这里有个特殊字符的问题,我这里只是列出了一部分的半角状态下的特殊字符
function comment_count_word($str){
//$str =characet($str);
//判断是否存在替换字符
$is_tihuan_count=substr_count($str,"龘");
try {
//先将回车换行符做特殊处理
$str = preg_replace('/(\r\n+|\s+| +)/',"龘",$str);
//处理英文字符数字,连续字母、数字、英文符号视为一个单词
$str = preg_replace('/[a-z_A-Z0-9-\.!@#\$%\\\^&\*\)\(\+=\{\}\[\]\/",\'<>~`\?:;|]/',"m",$str);
//合并字符m,连续字母、数字、英文符号视为一个单词
$str = preg_replace('/m+/',"*",$str);
//去掉回车换行符
$str = preg_replace('/龘+/',"",$str);
//返回字数
return mb_strlen($str)+$is_tihuan_count;
} catch (Exception $e) {
return 0;
}
}
我再来个js版本的,经过测试,和word统计出来的一致
function fnGetCpmisWords(str){
var sLen = 0;
try{
//先将回车换行符做特殊处理
str = str.replace(/(\r\n+|\s+| +)/g,"龘");
//处理英文字符数字,连续字母、数字、英文符号视为一个单词
str = str.replace(/[\x00-\xff]/g,"m");
//合并字符m,连续字母、数字、英文符号视为一个单词
str = str.replace(/m+/g,"*");
//去掉回车换行符
str = str.replace(/龘+/g,"");
//返回字数
sLen = str.length;
}catch(e){
}
return sLen;
}
本作品采用《CC 协议》,转载必须注明作者和本文链接
牛!