服务报价 | 域名主机 | 网络营销 | 软件工具| [加入收藏]
 热线电话: 130-5800-8007
当前位置: 主页 > php教程 > php教程 >

PHP字符截取函数,兼容各类gbk,utf-8编码

时间:2017-01-13 20:47来源: 作者: 点击:
在PHP中字符截取函数substr只能截取全英文才不会出现乱码如果里面有中文肯定是无法截取的,下面小编来给大家介绍两个兼容各类gbk,utf-8编码字符串截取函数,实例代码如下: function CsubS
在PHP中字符截取函数substr只能截取全英文才不会出现乱码如果里面有中文肯定是无法截取的,下面小编来给大家介绍两个兼容各类gbk,utf-8编码字符串截取函数,实例代码如下:
 
function CsubStrPro($str, $start, $length, $charset = "utf-8", $suffix = false) 
    if (function_exists ( "mb_substr" )) 
        return mb_substr ( $str, $start, $length, $charset ); 
    $re ['utf-8'] = "/[x01-x7f]|[xc2-xdf][x80-xbf]|[xe0-xef][x80-xbf]{2}|[xf0-xff][x80-xbf]{3}/"; 
    $re ['gb2312'] = "/[x01-x7f]|[xb0-xf7][xa0-xfe]/"; 
    $re ['gbk'] = "/[x01-x7f]|[x81-xfe][x40-xfe]/"; 
    $re ['big5'] = "/[x01-x7f]|[x81-xfe]([x40-x7e]|xa1-xfe])/"; 
    preg_match_all ( $re [$charset], $str, $match ); 
    $slice = join ( "", array_slice ( $match [0], $start, $length ) ); 
    if ($suffix) 
        return $slice . "…"; 
    return $slice; 
实例代码二:
 
function subString_UTF8($str, $start, $lenth) 
   { 
       $len = strlen($str); 
       $r = array(); 
       $n = 0; 
       $m = 0; 
       for($i = 0; $i < $len; $i++) { 
           $x = substr($str, $i, 1); 
           $a  = base_convert(ord($x), 10, 2); 
           $a = substr('00000000'.$a, -8); 
           if ($n < $start){ 
               if (substr($a, 0, 1) == 0) { 
               }elseif (substr($a, 0, 3) == 110) { 
                   $i += 1; 
               }elseif (substr($a, 0, 4) == 1110) { 
                   $i += 2; 
               } 
               $n++; 
           }else{ 
               if (substr($a, 0, 1) == 0) { 
                   $r[ ] = substr($str, $i, 1); 
               }elseif (substr($a, 0, 3) == 110) { 
                   $r[ ] = substr($str, $i, 2); 
                   $i += 1; 
               }elseif (substr($a, 0, 4) == 1110) { 
                   $r[ ] = substr($str, $i, 3); 
                   $i += 2; 
               }else{ 
                   $r[ ] = ''; 
               } 
               if (++$m >= $lenth){ 
                   break; 
               } 
           } 
       } 
       return $r; 
   } // End subString_UTF8; 
// End String 
由于此函数返回的是一个数组,因此要配合join函数来显示字符串:join('',subString_UTF8($str, $start, $lenth));,在页面显示的时候还可以在此语句后面连一个"..."
(责任编辑:最模板)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------