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

 我来答
一骑当后
推荐于2017-09-20 · 知道合伙人数码行家
一骑当后
知道合伙人数码行家
采纳数:40298 获赞数:306448
网络、设备维护、电路、弱电检测。

向TA提问 私信TA
展开全部
/*
功能:截取全角和半角混合的字符串以避免乱码
参数:
$str_cut 需要截断的字符串
$length  允许字符串显示的最大长度

*/

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 截断字符 后查找到一段代码。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式