当前位置:首页> PHP教程> php进阶
关键字
文章内容
php中文处理函数
 
 
修改时间:[2010/08/14 23:24]    阅读次数:[1268]    发表者:[起缘]
 
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."\n"
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
}
?> 


(非常全面的一个php技术网站, 有相当丰富的文章和源代码.)