PHP字符截取,解决中文的截取问题,不用mb系列

    技术2022-05-11  36

     

     

     

     

    //字符截取,解决中文的截取问题function  Cut_string($string,  $start ,$sublen, $extstring='...', $code = 'UTF-8')    {//Cut_string开始     if($code == 'UTF-8')     {         $pa = "/[/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]/";         preg_match_all($pa, $string, $t_string);          if(count($t_string[0]) - $start > $sublen) return join('', array_slice($t_string[0], $start, $sublen)).$extstring;         return join('', array_slice($t_string[0], $start, $sublen));     }     else     {         $start = $start*2;         $sublen = $sublen*2;         $strlen = strlen($string);         $tmpstr = '';          for($i=0; $i<$strlen; $i++)         {             if($i>=$start && $i<($start+$sublen))             {                 if(ord(substr($string, $i, 1))>129)                 {                     $tmpstr.= substr($string, $i, 2);                 }                 else                 {                     $tmpstr.= substr($string, $i, 1);                 }             }             if(ord(substr($string, $i, 1))>129) $i++;         }         if(strlen($tmpstr)<$strlen ) $tmpstr.= $extstring;         return $tmpstr;     } } //Cut_string结束


    最新回复(0)