美文网首页
截取中文字符串

截取中文字符串

作者: 上善若水_900e | 来源:发表于2017-09-11 08:21 被阅读0次

    /**

    * 截取中文字符串

    * @param string $string 中文字符串

    * @param int $sublen 截取长度

    * @param int $start 开始长度 默认0

    * @param string $code 编码方式 默认UTF-8

    * @param string $omitted 末尾省略符 默认...

    * @return string

    */

    function cut_str($string, $sublen, $start = 0, $code = 'UTF-8', $omitted = '...')

    {

    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)).$omitted;

    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.= $omitted;

    return $tmpstr;

    }

    }

    相关文章

      网友评论

          本文标题:截取中文字符串

          本文链接:https://www.haomeiwen.com/subject/flexsxtx.html