程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> PHP字符截取函數,兼容各類gbk,utf-8編碼

PHP字符截取函數,兼容各類gbk,utf-8編碼

編輯:關於PHP編程

在PHP中字符截取函數substr只能截取全英文才不會出現亂碼如果裡面有中文肯定是無法截取的,下面小編來給大家介紹兩個兼容各類gbk,utf-8編碼字符串截取函數

例1

 代碼如下 復制代碼

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;
}

例2

 代碼如下 復制代碼

 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));
#在頁面顯示的時候還可以在此語句後面連一個"..."

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved