在下有个文本文件:1.txt 其内容是【注意格式不变】:第1章楔子
Long long ago,三国鼎立,势均力敌,不相上下!分别为北祈、东沐、南缗。其中北祈的力量最为强大些,因为就在两年前,这个骁勇善战的北祈皇上薄奚野带兵灭掉了西楚国。
据民间传言,薄奚野灭掉西楚国的原因是为了一个长的比花还美貌的女子,名曰:花蕊儿,人称“花不足拟其色,似花蕊之翮轻”故名“花蕊夫人”。
这位花蕊夫人的美貌,曾经有一位大诗人曾经写过一首诗:
冰肌玉骨,自清凉无汗。
水殿风来暗香满。
绣帘开、一点明月窥人;
人未寝,枕钗横鬓乱。
起来携素手,庭户无声,时见疏星度河汉。
试问夜如何?夜已三更,金波淡。
玉绳低转,但屈指、西风几时来;
又不道、流年暗中偷换。想求各位指点一下 怎么算字数啊 其中有可能还有英文 我数据库是GBK的 不过我没存文章内容 只存文件名了 我现在是要读取如上1.txt的字数 求函数或代码?!PS:1、中文和英文都有 2、以上文本内容是一节一行
Long long ago,三国鼎立,势均力敌,不相上下!分别为北祈、东沐、南缗。其中北祈的力量最为强大些,因为就在两年前,这个骁勇善战的北祈皇上薄奚野带兵灭掉了西楚国。
据民间传言,薄奚野灭掉西楚国的原因是为了一个长的比花还美貌的女子,名曰:花蕊儿,人称“花不足拟其色,似花蕊之翮轻”故名“花蕊夫人”。
这位花蕊夫人的美貌,曾经有一位大诗人曾经写过一首诗:
冰肌玉骨,自清凉无汗。
水殿风来暗香满。
绣帘开、一点明月窥人;
人未寝,枕钗横鬓乱。
起来携素手,庭户无声,时见疏星度河汉。
试问夜如何?夜已三更,金波淡。
玉绳低转,但屈指、西风几时来;
又不道、流年暗中偷换。想求各位指点一下 怎么算字数啊 其中有可能还有英文 我数据库是GBK的 不过我没存文章内容 只存文件名了 我现在是要读取如上1.txt的字数 求函数或代码?!PS:1、中文和英文都有 2、以上文本内容是一节一行
$filename = '1.txt';
echo mb_strlen(str_replace(array("\r", "\n", "\t", ' '/*, ',', '.', '?', ':', '!', '\'', '"', ',', '。', '?', '!', ':', ' ' 标点符号自己看着写吧,最后一个是全角空格 */), '', file_get_contents($filename)), $charset)
默认编码不一定是gbk的,也有可能是utf-8,加一个编码参数几乎不会变慢
你上次遇到的mb_xxx,加了个参数变慢的原因,我已经解释的很清楚了//写法一,在我这里耗费3.4秒
<?php
$str = "abc我";
for ($i=0; $i<1000000; $i++)
$a = mb_substr($str, 0, 2, "utf8");
?>
//
//
//写法二,在我这里耗费1.4秒
<?php
$str = "abc我";
for ($i=0; $i<1000000; $i++)
$a = mb_substr($str, 0, 2, "UTF-8");
?>
//
//
//写法三,在我这里耗费0.7秒
<?php
$str = "abc我";
mb_internal_encoding("UTF-8");
for ($i=0; $i<1000000; $i++)
$a = mb_substr($str, 0, 2);
?>
//
//
//
//减去解释器载入和初始化以及代码编译的时间
//各个方案的性能差别,就更大了解释:mb_string 系列函数,在执行的时候,如果指定了一个编码参数,PHP会
从标准编码名字表中查找编码名字,如果找不到,会尝试从标准编码的MIME字符
集名中查找,如果还是查找不到,会接着尝试标准编码名字的所有别名。这个过程
中,并没有很高效的算法,字符串的匹配,用的是 strcasecmp,性能本身就不高。
所以,应当避免不规范的编码名字。如果多次执行,应当先设置mb_string内部编
码名字,而不是每次都指定编码。(参考php源码中的mbfl_name2encoding函数)
echo mb_strlen(preg_replace('/\s+/','',file_get_contents("1.txt")),"gbk");
以下是我从excel里复制的两行记录 复制到1.txt里 如下【大家不妨把自己写的用这个试一下,再对照word里显示的字数,希望哪位能给我一个回复,解释一下原因】:我的青春谁做主 24 18 凹进奥斯卡了解奥斯卡了大幅几啊说 图灵出版社 2006-09-03 2009-06-18 C-00000000001 B-00000000001 1 2 8 P-00000000001-1 P-00000000001-2
奋斗 16 李四 23 第三方根深蒂固大法官 343-344 小强出版 2009-05-18 2009-06-18 C-00000000002 B-00000000002 7 3 6 B-00000000002-01 B-00000000002-022、
还有一个方法 不知对否 请高手指点 譬如上述两条记录复制在1.txt里,1.txt的大小为299字节 我的字符集是gbk的 一个汉字是两个字节(一个GBK汉字字符是2个字节,英文数字是1个字节) 我用299/2=149.5 最后结论是149.5个汉字 可word里显示的是69个字 在下就像知道究竟是为何 请各位点解!!!!可以有误差,但大家要知道小误差遇到大场面(或大数据)的时候,就是错误了.....
奋斗 16 李四 23 第三方根深蒂固大法官 343-344 小强出版 2009-05-18 2009-06-18 C-00000000002 B-00000000002 7 3 6 B-00000000002-01 B-00000000002-02";preg_match_all("/[".chr(0xa1)."-".chr(0xff)."]{2}/",$str,$m);//匹配gbk编码下的中文print_r($m[0]);echo count($m[0]);
$str = "我的青春谁做主 24 18 凹进奥斯卡了解奥斯卡了大幅几啊说 图灵出版社 2006-09-03 2009-06-18 C-00000000001 B-00000000001 1 2 8 P-00000000001-1 P-00000000001-2
奋斗 16 李四 23 第三方根深蒂固大法官 343-344 小强出版 2009-05-18 2009-06-18 C-00000000002 B-00000000002 7 3 6 B-00000000002-01 B-00000000002-02";preg_match_all("/[".chr(0xa1)."-".chr(0xff)."]{2}|[a-zA-Z0-9_-]+/",$str,$m);print_r($m[0]);echo count($m[0]);//这下69了吧?