色尼玛亚洲综合影院,亚洲3atv精品一区二区三区,麻豆freexxxx性91精品,欧美在线91

PHP 字符串編碼截取函數(shù)(兼容utf-8和gb2312)

復(fù)制代碼 代碼如下:
//截取字符串長(zhǎng)度。支持utf-8和gb2312編碼。若為gb2312,先將其轉(zhuǎn)為utf-8,在utf-8的基礎(chǔ)上截取然后再轉(zhuǎn)換回來(lái)
function cut_string($str,$from=1,$length=10,$code='utf-8',$rear='...'){
    if($code!='utf-8'){//總是將字符串轉(zhuǎn)為utf-8編碼
        $str=iconv($code,'utf-8',$str);
    }
    $str_len=mb_strlen($str,'utf-8');//字符串的長(zhǎng)度
    if($from>$str_len){//如果截取開(kāi)始位置大于字符串長(zhǎng)度,截取后面$length個(gè)
        $from=$str_len-$length+1;
        $from=($from<1?1:$from);
    }
    //兼容ucs-4編碼
    $i=0;//字節(jié)計(jì)數(shù)
    $from_i=0;//開(kāi)始截取的字節(jié)位置
    $from_len=0;//開(kāi)始截取的字符位置
    $tag=true;//標(biāo)志$from_len是否已經(jīng)被賦值
    for($temp_len=0;($temp_len-$from_len<$length)||$tag;$temp_len++){
        $byte_code=ord(substr($str,$i,1));//一個(gè)字節(jié)的編碼
        if($temp_len+1==$from){//記錄開(kāi)始截取的開(kāi)始字節(jié)位置
            $from_i=$i;$from_len=$temp_len;$tag=false;
        }
        if($byte_code>=0&&$byte_code<128){//字符是占用幾個(gè)字節(jié),utf-8是變長(zhǎng)編碼,根據(jù)每個(gè)字符的第一個(gè)字節(jié)可判斷出該字符占幾個(gè)字節(jié)
            $i++;
        }
        if($byte_code>191&&$byte_code<224){
            $i+=2;
        }
        if($byte_code>223&&$byte_code<240){
            $i+=3;
        }
        if($byte_code>239&&$byte_code<248){
            $i+=4;
        }
        if($byte_code>248&&$byte_code<252){
            $i+=5;
        }
        if($byte_code>252&&$byte_code<255){
            $i+=6;
        }
    }
    return iconv('utf-8',$code,substr($str,$from_i,$i-$from_i).$rear);
}

php技術(shù)PHP 字符串編碼截取函數(shù)(兼容utf-8和gb2312),轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 大竹县| 湘阴县| 平原县| 西宁市| 武城县| 施甸县| 饶平县| 安福县| 渭源县| 泗水县| 望江县| 渭南市| 廊坊市| 霍城县| 赤峰市| 轮台县| 隆子县| 中宁县| 岚皋县| 都江堰市| 梓潼县| 绩溪县| 阜宁县| 汝州市| 朝阳市| 黄冈市| 沧源| 大庆市| 马关县| 略阳县| 呼伦贝尔市| 镇江市| 多伦县| 丰镇市| 绥棱县| 车致| 深水埗区| 平南县| 沂水县| 长白| 上犹县|