首页 > php函数 > php中文处理函数

php中文处理函数

<?php
/*
php使用ISO-8859-1处理字符串,也就是以单字节处理字符串。中文码属于多字节字符,在使用substr, 
strlen,str_peplace等函数时很容易产生错误,处理中文特殊操作,必须使用一组中文处理函数。下面是 
GBK的substr,strlen操作函数,前者并不像php的substr一样可以使用负数作为start,lenght.希望大家 
来不断完善这些函数,达到高效实用的程度。
*/
//gbk str handle
function gbk_substr(&$str, $start, $length = - 1) {
    if ($length == 0) return "";
    if ($start < 0) $start = 0;
    for ($i = 0; $i < $start; $i++) {
        if (ord(substr($str, $i, 1)) >= 0x81) {
            $start++;
            $i++;
        }
    }
    if ($start > gbk_strlen($str)) return "";
    $ss = "";
    if ($length == - 1) {
        $ss = substr($str, $start);
    } else {
        echo "leghth=" . $length . " ";
        for ($i = $start; $i < $start + $length; $i++) {
            if (ord(substr($str, $i, 1)) >= 0x81) {
                $ss.= substr($str, $i, 2);
                $length++;
                $i++;
            } else {
                $ss.= substr($str, $i, 1);
            }
        }
    }
    return $ss;
}
function gbk_strlen(&$str) {
    $len = strlen($str);
    $l = 0;
    for ($i = 0; $i < $len; $i++) {
        if (ord(substr($str, $i, 1)) >= 0x81) $i++;
        $l++;
    }
    return $l;
}
function gb2312_strlen(&$str) {
    $len = strlen($str);
    $l = 0;
    for ($i = 0; $i < $len; $i++) {
        if (ord(substr($str, $i, 1)) >= 0xa1) $i++;
        $l++;
    }
    return $l;
}
?>


本文地址:http://www.phprm.com/function/1ada17d33ef919fccf7496a55d1912ee.html

转载随意,但请附上文章地址:-)

标签:none

发表留言