91. 正确统计中文字数

PHP 中如何正确统计中文字数?这个是困扰我很久的问题,php 中有很多函数可以计算字符串的长度,比如下面的例子,分别使用了 strlenmb_strlenmb_strwidth 这个三个函数去测试统计字符串的长度,看看把中文算成几个字节:

echo strlen("你好ABC") . "";
//输出 9
echo mb_strlen("你好ABC", ‘UTF-8‘) . "";
// 输出 5
echo mb_strwidth("你好ABC") . "";
//输出 7
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

从上面的测试,我们可以看出:strlen 把中文字符算成 3 个字节,mb_strlen 不管中文还是英文,都算 1 个字节,而 mb_strwidth 则把中文算成 2 个字节,所以 mb_strwidth 才是我们想要的:中文 2 个字节,英文 1 个字节。

同样截取字符串也建议使用 mb_strimwidth,也是按照 中文 2 个字节,英文 1 个字节 方式计算之后的,并且如果字数超过截取的要求,这个函数还可以在最后面自动添加‘…’。

mb_strimwidth($post_excerpt,0,240,‘...‘,‘utf-8‘);
  • 1
  • 1

注意,最后添加‘utf-8’编码参数,可以避免中文截取乱码的问题。

来源: http://blog.csdn.net/ityang521/article/details/53178588

时间: 2024-12-19 19:39:28

91. 正确统计中文字数的相关文章

PHP 中如何正确统计中文字数

PHP 中如何正确统计中文字数?这个是困扰我很久的问题,PHP 中有很多函数可以计算字符串的长度,比如下面的例子,分别使用了 strlen,mb_strlen,mb_strwidth 这个三个函数去测试统计字符串的长度,看看把中文算成几个字节: echo strlen("你好ABC") . ""; # 输出 9 echo mb_strlen("你好ABC", 'UTF-8') . ""; # 输出 5 echo mb_strw

让secureCRT正确显示中文

1.安装linux时选择中文系统,或安装后vi /etc/sysconfig/i18n文件改为:LANG= zh_CN.UTF-8 2.在secureCRT里面: Session Options(会话选项) -> Terminal(终端) -> Appearance(显示), 将Fonts(字体)选择成fixedsys将charater(字符)选择成UTF-8就支持中文了. 让secureCRT正确显示中文,布布扣,bubuko.com

uploadify不能正确显示中文的按钮文本的解决办法

uploadify 目前不能正确显示中文的按钮文本. 我发现bug的原因是uploadify错误的使用了 js 的 escape 和 flash 的 unescape配对,而这2个是不兼容的.正确的转码传递参数应该用 encodeURI/decodeURI 配对,这2个函数的行为在js和flash里是相同的.其他地方的escape/unescape也应该替换掉,下面只修改影响按钮文本的部分.1. jquery.uploadify.v2.1.4.js 70行 将if (settings.butto

windows中让secureCRT正确显示中文(ssh)

已经在raspi中正确设置了juicessh安卓客户端已经测试过了,可以正常显示中文. 1.安装linux时选择中文系统,或安装后vi /etc/sysconfig/i18n文件改为:LANG= zh_CN.UTF-8 2.在secureCRT里面: Session Options(会话选项) -> Terminal(终端) -> Appearance(显示), 将Fonts(字体)选择成fixedsys将charater(字符)选择成UTF-8就支持中文了. windows中让secureC

UITextField限制输入中文字数

前面写一了篇,UITextField Category来限制输入的字数,是有个Bug的,要输入中文时会crash.现在修改 了下,代码如下 .h文件 #import <UIKit/UIKit.h> @interface UITextField (LimitLength) /** * 使用时只要调用此方法,加上一个长度(int),就可以实现了字数限制,汉字不可以 * * @param length */ - (void)limitTextLength:(int)length; /** * uit

词频统计英文和统计中文的区别

通常我们做英文词频统计的时候,我们可能会采用单词树,或者map等等. 但是,在进行中文的词频统计的时候,中文之间没有空格和符号,不像在英 文词频统计一样,英文之间是有空格和符号的.所以,相对于英文来说,中 文词频统计比较难.主要是不好提取中文字通常我们在提取中文时候会进行 划分,通过汉字的关联等等来进行划分,提取.

java统计中英文字数

http://yangchao20020.blog.163.com/blog/static/483822472011111635424751/ 这个不适用于新浪微博字数的统计,结果有差别,若需要可以找我另外一篇 "java 实现新浪微博内容计数器"

织梦dede在文章页统计文章字数

找到文件/include/helpers/下面的文件extent.helper.php 在文件下面添加: function strlen_utf8($str) { $i = 0; $count = 0; $str = Html2text($str); $len = strlen($str); while ($i < $len) { $chr = ord($str[$i]); $count++; $i++; if ($i >= $len) { break; } if ($chr & 0x

vue使用textare如何正确统计输入字符个数

最近vue做微信公众号的开发,使用weui的textarea输入限制字数(官网例子),并且显示.代码如下:再安卓和电脑都没有问题,但是ios输入的时候,显示字数不正确, 但是输入之后删除其中一个,就可以正确显示,比较坑的. <div class="weui-cell__bd"> <textarea v-model="consultation.description" id="description" class="we