A-A+

php截取utf8字符串和gbk字符串函数

2012年06月09日 软件开发 暂无评论

在 PHP 中,我们直接使用PHP strlen函数进行字符串截取,对于英文字符,没有什么区别,输出的结果都是一样的,而在截取中文时,却有一点小小的问题,我们知道,字符分为两种状态,一种是 gbk 字符串,另一种就是 utf-8 字符串,如果按照常规的输出方法,输出的结果是不一样的。

php strlen 函数最基本的参数有 str 字符串,len 长度,start 开始位置,如果截取的字符串 gbk 格式,那么 len 的步长为 1,截取“番茄博客”,只取前两个字符,输出就是“夏日”,而截取的字符串类型是 utf-8 格式的话,那么 len的步长则为 2,输出的结果为“夏日博”,这也就是两种格式输出不一样的原因。

简要说明一下截出输入的步长,以“番茄博客”为例,步长从 0 开始,从开始的“夏”之前开始算起,第一步为0,则“夏”之后为第二步为 1,依此类推。

依照上述原理,我们可以写一个同时支持截取 gbk 和 utf-8 字符的函数,如下:

[code lang="php"]
0x80){
for($j=$i;$j<=$i+$step;$j++){ $char .= $string[$j]; } $i+=$step; }else{ $char = $string[$i]; } $index++; if($index>=$start){
$length--;
$result .= $char;
}
}else{
break;
}
}
return $result;
}
}
echo cn_substr("败鸟先飞",2,0,"utf-8"); //使用方法
?>
[/code]

标签:

给我留言