php按字符无乱码截取中文的方法

本文实例讲述了php按字符乱码截取中文的方法。分享给大家供大家参考。具体实现方法如下:

  <?php  //$str 待截取的字符串  //$len 截取的字符个数  //$chars 已经截取的字符数  //$res  保存的字符串  //$chars 保存已经截取的字符串个数  //$offset 截取的偏移量  //$length 字符串的字节数  //若$len>$str的字符个数,造成无谓的while循环,($offset<$length限定)  function utf8sub($str,$len){    if($len<=0){      return ;    }    $res="";    $offset=0;    $chars=0;    $length=strlen($str);    while($chars<$len && $offset<$length){      $hign=decbin(ord(substr($str,$offset,1)));        if(strlen($hign)<8){          $count=1;        }elseif(substr($hign,0,3)=="110"){          $count=2;        }elseif(substr($hign,0,4)=="1110"){          $count=3;        }elseif(substr($hign,0,5)=="11110"){          $count=4;        }elseif(substr($hign,0,6)=="111110"){          $count=5;        }elseif(substr($hign,0,7)=="1111110"){          $count=6;        }      $res.=substr($str,$offset,$count);      $offset+=$count;      $chars+=1;    }    return $res;  }  function utf8sub1($str,$len){    $chars=0;    $res="";    $offset=0;    $length=strlen($str);    while($chars<$len && $offset<$length){      $hign=decbin(ord(substr($str,$offset,1)));      if(strlen($hign)<8){        $count=1;      }elseif($hign & "11100000"=="11000000"){        $count=2;      }elseif($hign & "11110000"=="11100000"){        $count=3;      }elseif($hign & "11111000"=="11110000"){        $count=4;      }elseif($hign & "11111100"=="11111000"){        $count=5;      }elseif($hign & "11111110"=="11111100"){        $count=6;      }      $res.=substr($str,$offset,$count);      $chars++;      $offset+=$count;    }    return $res;  }  $a="中华ah人民hdj";  echo utf8sub($a,5);  ?>

希望本文所述对大家的php程序设计有所帮助。

php按字符无乱码截取中文的方法

郑重声明:本网站发布的内容(图片、视频和文字)以及用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服