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
转载随意,但请附上文章地址:-)