<?php
function cut_str($string, $sublen, $start = 0, $code = 'UTF-8')
{
   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))."...";
       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.= "...";
       return $tmpstr;
   }
}

$str = "自乔布斯去世之后,外界一致认为是因为他的一如既往的固执,而错过了最佳治疗时间";
$aa= cut_str($str, 36, 0, 'gb2312');
print_r($aa);
?>

posted on 2013-07-31 10:38  幸福之家128817  阅读(252)  评论(0编辑  收藏  举报