PHP教程:strlen与mb_strlen字符串长度函数


懂PHP的都知道strlen与mb_strlen是求字符串长度的函数,但是对于一些初学者来说,如果不看手册,也许不太清楚其中的区别。
先看这样一段代码吧(先决条件是:字符编码为UTF-8):

<?
$str = '懂PHP的都知道strlen与mb_strlen是求字符串长度的函数';
echo strlen($str)'.<br />'.mb_strlen($str,'utf-8');
?>

运行上述代码,返回值如下:
66
34

怎么样?strlen中,中文是三个字节的长度,英文则是一个字节的长度!mb_strlen中,都被计算为一字节的长度!所以,我们有时候用substr来截取UTF-8中文字符串的时候,经常会出现乱码,就是这个原因了!
下面提供一个截取UTF-8字符串的函数:

function cutstr($sourcestr,$cutlength){
$returnstr = '';
$i = 0;
$n = 0;
$str_length = strlen($sourcestr);
$mb_str_length = mb_strlen($sourcestr,'utf-8');
while(($n < $cutlength) && ($i <= $str_length)){
$temp_str = substr($sourcestr,$i,1);
$ascnum = ord($temp_str);
if($ascnum >= 224){
$returnstr = $returnstr.substr($sourcestr,$i,3);
$i = $i + 3;
$n++;
}
elseif($ascnum >= 192){
$returnstr = $returnstr.substr($sourcestr,$i,2);
$i = $i + 2;
$n++;
}
elseif(($ascnum >= 65) && ($ascnum <= 90)){
$returnstr = $returnstr.substr($sourcestr,$i,1);
$i = $i + 1;
$n++;
}
else{
$returnstr = $returnstr.substr($sourcestr,$i,1);
$i = $i + 1;
$n = $n + 0.5;
}
}
if ($mb_str_length > $cutlength){
$returnstr = $returnstr . "...";
}
return $returnstr;
}

使用例子:

<?
$str = '有效期最长三个月,超过有效期系统将自动删除本条信息';
//echo strlen($str);
//echo '<hr />'.mb_strlen($str,'utf-8');
echo '<hr />'.$str;
echo '<hr />'.cutstr($str,24);
?>



相关阅读:
JavaScript 高效运行代码分析
未通过微软正版验证出现黑屏怎么办
vb.net入门——ComboBox 控件的使用
分秒必争域的时间同步问题
浅谈PHP语法(4)
Linux内核2.6.25全新发布加入众多新特性
PHP中实现汉字转区位码应用源码实例解析
文件夹无法删除的常用解决办法
新手入门 ASP.NET2.0缓存技术
SQL截取字符串函数分享
细说浏览器特性检测(1)-jQuery1.4添加部分
Javascript 事件流和事件绑定
通过SQLServer 2008 操作 MySQL的方法
取得MYSQL中ENUM(枚举)列的全部可能值
快速导航
PHP MySQL HTML CSS JavaScript MSSQL AJAX .NET JSP Linux Mac ASP 服务器 SQL jQuery C# C++ java Android IOS oracle MongoDB SQLite wamp 交通频道 作文范文 那一年的夏天作文600字 高中高三作文1000字:走进山村 自己心中的天使作文1200字 黄果树瀑布作文200字 啊!谢谢您,老师作文450字 荷池中 幽默的自我介绍范文 小学三年级作文400字:美丽的大公鸡 中考课外文言文一日一练(十二)申屠敦之鼎 师范学校学生实习鉴定表 爱情经典名言:道德中最大的秘密是爱 盛夏宋旅作文600字 最新中学生入团时间查询 我的三下乡,我的小世界 入党申请谈话的基本问题 金工实习报告--材料学院高分子 邓雪芬 做心理咨询能得到什么 营销方案投标报名表 英文简历送你进世界500强 山中寄樊仆射(一作寄襄阳樊司空) 元旦晚会策划书模板 一年级优秀作文 “煎熬”了哦! 初中初二作文800字:《林教头风雪山神庙》读后感 萤火闪闪亮 种子的梦想 又是清明时! 以激情为话题的作文 我们以前要的,不是这种以后 幼儿园迎新年晚会串词一则 励志故事:别让细节坏了大事 留别王维 赏析 某市“优质护理服务示范工程”实施方案 国庆农家乐 清明节的25个禁忌 加强居住物业装修网格化管理的调研工作报告 小兔与蘑菇 读《谈生命》有感作文600字 碎作文900字 繁花尽落作文100字 面试自我介绍:5招必备 有趣的新电打旧电 中秋节日记100字 她很美丽 我们的教育作文1300字 现代男女为何恐惧婚姻 【越调】斗鹌鹑 元宵 第一次坐飞机800字 心灵的童年作文700字 八一建军节活动主题名称 爱无期,情就在

Copyright © 2016 phpStudy |