技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> PHP --> PHP截取汉字出现乱码的解决方法

PHP截取汉字出现乱码的解决方法

浏览:2583次  出处信息

下面的代码是来自于Sablog(http://www.sablog.net/

以下是代码片段:
function trimmed_title($text, $limit=12) {
 if ($limit) {
  $val = csubstr($text, 0, $limit);
  return $val[1] ? $val[0]."..." : $val[0];
 } else {
  return $text;
 }
}
 
以下是代码片段:
function csubstr($text, $start=0, $limit=12) {
 if (function_exists(’mb_substr’)) {
  $more = (mb_strlen($text, ’UTF-8’) > $limit) ? TRUE : FALSE;
  $text = mb_substr($text, 0, $limit, ’UTF-8’);
  return array($text, $more);
 } elseif (function_exists(’iconv_substr’)) {
  $more = (iconv_strlen($text) > $limit) ? TRUE : FALSE;
  $text = iconv_substr($text, 0, $limit, ’UTF-8’);
  return array($text, $more);
 } else {
  preg_match_all("/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|\xe0[\xa0-\xbf][\x80-\xbf]|[\xe1-\xef][\x80-\xbf][\x80-\xbf]|\xf0[\x90-\xbf][\x80-\xbf][\x80-\xbf]|[\xf1-\xf7][\x80-\xbf][\x80-\xbf][\x80-\xbf]/", $text, $ar);  
  if(func_num_args() >= 3) {  
   if (count($ar[0])>$limit) {
    $more = TRUE;
    $text = join("",array_slice($ar[0],0,$limit))."...";
   } else {
    $more = FALSE;
    $text = join("",array_slice($ar[0],0,$limit));
   }
  } else {
   $more = FALSE;
   $text =  join("",array_slice($ar[0],0));
  }
  return array($text, $more);
 }
}

于是就有人提炼成:

以下是代码片段:
function csubstr ($text, $limit) {
$s = ’’;
for($i=0;$i< $limit-3;$i++) {
$s .= ord($text[$i])>127 ? $text[$i].$text[++$i] : $text[$i];
}
return $s;
}

以上仅适用于gb2312 编码(gb2312中,一个汉字占两个字节),如果是UTF-8(UTF-8中一个汉字占三个字节)需要把第4行改为:

以下是代码片段:
$s .= ord($text[$i])>127 ? $text[$i].$text[++$i].$text[++$i] : $text[$i];

建议继续学习:

  1. Vim 中截取部分内容保存到其他文件    (阅读:6326)
  2. windows下压缩包在linux解压乱码的解决办法    (阅读:4167)
  3. Linux screen窗口中文乱码问题    (阅读:3942)
  4. linux下vim的编译以及终端乱码的最终解决方案    (阅读:3518)
  5. java中文乱码解决之道(六)—–javaWeb中的编码解码    (阅读:3142)
  6. PHP截取图片的某个区域    (阅读:2836)
  7. 解决PHPMailer邮件标题中文乱码    (阅读:2622)
  8. 如何在PHP下载文件名中解决乱码    (阅读:2589)
  9. Smarty截取中文乱码的解决办法    (阅读:2488)
  10. java中文乱码解决之道(一)—–认识字符集    (阅读:2394)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
© 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号-1