本文实例讲述了php自定义函数实现统计中文字符串长度的方法。分享给大家供大家参考,具体如下:

中文字符计算为2个字符 英文字符计算为1个
代码
/**
* 可以统计中文字符串长度的函数
*
*/
function abslength($str)
{
$len=strlen($str);
$i=0;
while($i<$len)
{
if(preg_match("/^[".chr(0xa1)."-".chr(0xff)."]+$/",$str[$i]))
{
$i+=2;
}
else
{
$i+=1;
}
}
return $i;
}
另:php判断字符长度:中文,英文,数字。
这个方法很多。 记录一个简单的。
mb_strlen($str, 'GBK');
缺点是要安装mb库。
不过这个还是有部分问题待解决。
GB码编码规则是这样的:每个汉字由两个字节构成,第一个字节的范围从0XA1-0XFE,共96种。第二个字节的范围分别为0XA1-0XFE,共96种。利用这两个字节共可定义出 96 * 96=8836种汉字。实际共有6763个汉字。
BIG5码编码规则是这样的:每个汉字由两个字节构成,第一个字节的范围从0X81-0XFE,共126种。第二个字节的范围分别为0X40-0X7E,0XA1-0XFE,共157种。也就是说,利用这两个字节共可定义出 126 * 157=19782种汉字。这些汉字的一部分是我们常用到的,如一、丁,这些字我们称为常用字,其BIG5码的范围为0XA440-0XC671,共5401个。较不常用的字,如滥、调,我们称为次常用字,范围为 0XC940-0XF9FE,共7652个,剩下的便是一些特殊字符。
安全点的方法。
function StrLenW($str)
{
$count = 0;
$len = strlen($str);
for($i=0; $i<$len; $i++,$count++)
if(ord($str[$i])>=128)
$i++;
return $count;
}
最后,下面这个才是正确的,通用的!
代码:
/**作用:统计字符长度包括中文、英文、数字
* 参数:需要进行统计的字符串、编码格式目前系统统一使用UTF-8
* 修改记录:
$str = "kds";
echo sstrlen($str,'utf-8');
* */
function sstrlen($str,$charset) {
$n = 0; $p = 0; $c = '';
$len = strlen($str);
if($charset == 'utf-8') {
for($i = 0; $i < $len; $i++) {
$c = ord($str{$i});
if($c > 252) {
$p = 5;
} elseif($c > 248) {
$p = 4;
} elseif($c > 240) {
$p = 3;
} elseif($c > 224) {
$p = 2;
} elseif($c > 192) {
$p = 1;
} else {
$p = 0;
}
$i+=$p;$n++;
}
} else {
for($i = 0; $i < $len; $i++) {
$c = ord($str{$i});
if($c > 127) {
$p = 1;
} else {
$p = 0;
}
$i+=$p;$n++;
}
}
return $n;
}
PS:这里再为大家推荐2款非常方便的统计工具供大家参考使用:
在线字数统计工具:
http://tools./code/zishutongji
在线字符统计与编辑工具:
http://tools./code/char_tongji
更多关于PHP相关内容感兴趣的读者可查看本站专题:《php常用函数与技巧总结》、《php字符串(string)用法总结》、《PHP数组(Array)操作技巧大全》、《PHP基本语法入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。
# php
# 统计
# 中文字符串
# 长度
# PHP字符串长度计算 - strlen()函数使用介绍
# php中计算中文字符串长度、截取中文字符串的函数代码
# 最准确的php截取字符串长度函数
# 利用PHP函数计算中英文字符串长度的方法
# PHP中preg_match函数正则匹配的字符串长度问题
# php strlen mb_strlen计算中英文混排字符串长度
# 详解PHP中strlen和mb_strlen函数的区别
# 浅析PHP中strlen和mb_strlen的区别
# 自己写的php中文截取函数mb_strlen和mb_substr
# PHP中strlen()和mb_strlen()的区别浅析
# php中strlen和mb_strlen用法实例分析
# php常用字符串长度函数strlen()与mb_strlen()用法实例分析
# 英文
# 第一个
# 是这样
# 这两个
# 第二个
# 分别为
# 操作技巧
# 相关内容
# 是有
# 才是
# 感兴趣
# 给大家
# 自定义
# 更多关于
# 所述
# 程序设计
# 再为
# 编辑工具
# 也就是说
# 特殊字符
相关文章:
可靠的网站设计制作软件,做网站设计需要什么样的电脑配置?
如何通过老薛主机一键快速建站?
企业宣传片制作网站有哪些,传媒公司怎么找企业宣传片项目?
如何在宝塔面板中创建新站点?
如何在万网自助建站平台快速创建网站?
如何安全更换建站之星模板并保留数据?
建站之星Pro快速搭建教程:模板选择与功能配置指南
如何快速上传建站程序避免常见错误?
简单实现Android验证码
Java解压缩zip - 解压缩多个文件或文件夹实例
如何快速搭建高效可靠的建站解决方案?
如何配置FTP站点权限与安全设置?
如何用AWS免费套餐快速搭建高效网站?
微课制作网站有哪些,微课网怎么进?
头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?
建站主机选购指南与交易推荐:核心配置解析
青浦网站制作公司有哪些,苹果官网发货地是哪里?
广州营销型建站服务商推荐:技术优势与SEO优化解析
Swift中swift中的switch 语句
建站之星安装模板失败:服务器环境不兼容?
潮流网站制作头像软件下载,适合母子的网名有哪些?
内网网站制作软件,内网的网站如何发布到外网?
娃派WAP自助建站:免费模板+移动优化,快速打造专业网站
网站制作服务平台,有什么网站可以发布本地服务信息?
宿州网站制作公司兴策,安徽省低保查询网站?
如何正确选择百度移动适配建站域名?
如何在Golang中引入测试模块_Golang测试包导入与使用实践
如何快速搭建高效WAP手机网站?
如何选择网络建站服务器?高效建站必看指南
c++怎么用jemalloc c++替换默认内存分配器【性能】
如何彻底删除建站之星生成的Banner?
如何快速搭建高效香港服务器网站?
如何制作网站标识牌,动态网站如何制作(教程)?
如何通过FTP空间快速搭建安全高效网站?
C++中引用和指针有什么区别?(代码说明)
C#怎么使用委托和事件 C# delegate与event编程方法
想学网站制作怎么学,建立一个网站要花费多少?
建站之星导航菜单设置与功能模块配置全攻略
香港服务器网站生成指南:免费资源整合与高速稳定配置方案
如何选择高效便捷的WAP商城建站系统?
济南专业网站制作公司,济南信息工程学校怎么样?
宝塔面板如何快速创建新站点?
建站之星伪静态规则如何正确配置?
香港服务器建站指南:免备案优势与SEO优化技巧全解析
网站建设设计制作营销公司南阳,如何策划设计和建设网站?
惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?
如何基于云服务器快速搭建网站及云盘系统?
零服务器AI建站解决方案:快速部署与云端平台低成本实践
宝塔新建站点报错如何解决?
*请认真填写需求信息,我们会在24小时内与您取得联系。