永发信息网

如何利用PHP来截取一段中文字符串而不出现乱码

答案:1  悬赏:60  手机版
解决时间 2021-04-19 10:42
如何利用PHP来截取一段中文字符串而不出现乱码
最佳答案


function substr_cut($str_cut,$length = 30){ 

if (strlen($str_cut) >; $length){
  for($i=0; $i < $length; $i++)
   if (ord($str_cut[$i]) >; 128) $i++;
  $str_cut = substr($str_cut,0,$i) . "...";
}
return $str_cut;
}

说明: 
程序的关键语句是: 

for($i=0; $i < $length; $i++)
if (ord($str_cut[$i]) >; 128) $i++;

$str_cut = substr($str_cut,0,$i) . "...";
如果字符的ASCII码大于128,说明当前字符和下一个字符是属于一个汉字的。 
则,$i++ 跳过对下一个字符的判断。 
再结合循环中的 $i++ ,实际上,当遇到一个汉字时,$i 就会加 2 ,从而正确的跳过汉字。 
最终实现的效果是,$i 变量指向的要么是半角的字符,要么是全角汉字的首字符,不会指向 
全角汉字的第二个字符,所以,当$i >;= $length 时,循环结束,使用 
$str_cut = substr($str_cut,0,$i) . "..."; 截取字符时自然也就不会出现乱码了。 


本人在写一个程序时需要利用PHP从一段字符串中截取指定长度的一段字符下来。以前在写ASP的时候,参考动网的程序写过类似的程序,不过,还没用PHP写过。 

想偷懒,看有不有现成的代码可以用。于是,在GOOGLE中输入:PHP 截断字符 后查找到一段代码。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
贵阳离六盘水有多远,从长沙坐火车到六盘水要
朋友嫁女恭喜出嫁贺词,朋友嫁女儿用什么贺词
工作哲理句子,求小说中有哲理的话
数控法兰克编程指令都有哪些?
已知5x=36,5y=2,求5x-2y的值
安顺到平坝打车多少钱,从张店到高青除了71路
从atm机银行卡里取钱,手机也会受到短信通知
化验室质量标语设计,建筑工地标语竖幅和横幅
八字大学迎新标语,和大学有关的句子
我有一个乾隆年制的斗彩粉盒内有春宫图,底部
男孩左眼皮跳代表什么,左眼皮跳是什么意思?
酒精灯是实验中常用的热源.熄灭酒精灯时应用
登高有关的古诗词名句,有关旅行愉快的诗句
寻仙炫彩升星辰宝石后装备还在吗
八个字对单位的祝福词,有人搬入新居,亲友前
推荐资讯
提高情商的语句,考验下你们的情商,把这22个
王守仁的名言,明代思想家王守仁的名言
人民币前三位数字是888号值多少钱
名家红色诗词朗诵大全,经典短篇爱国红色诗歌
梦幻西游59NE怎么点 玩封的
DNF狂战与剑魂哪个厉害?
想找几款比较适合女生用的手机,价位在1500左
等待了700多天 、为什么他一出来却不想见他呢
六十岁生日送什么好,六十岁生日送什么礼物
怎样批评老师而不被停课
DNF60级了还可以升级吗?
奕雅玉器地址在哪,我要去那里办事
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?