使用PHP开发网站的时候经常要截取字符串,肯定不可避免的会出现乱码,而且UTF8编码和GBK编码的网页,乱码形式还不一样,所以我根据自己以往的工作经验,总结了不同编码格式下PHP截取字符串避免乱码的方法。
1、UTF8编码的网页(每个中文代表3个字节)
header('content-type:text/html;charset="utf-8"');
$str = '内容测试http://www.baidu.com;
$newStr = substr($str,0,15);
$len = strlen($newStr);
$num = 0;
for($i=0; $i
if(ord($newStr[$i])>127){
$num+=1;
}
}
if($num%3==1){
$len+=2;
}else if($num%3==2){
$len+=1;
}else{
$len+=0;
}
echo substr($str,0,$len).'
';
?>
2、GBK编码的网页(每个中文代表2个字节):
header('content-type:text/html;charset="gb2312"');
$str = '内容测试http://www.baidu.com';
$newStr = substr($str,0,16);
$len = strlen($newStr);
$num = 0;
for($i=0; $i
if(ord($newStr[$i])>127){
$num+=1;
}
}
if($num%2!=0){
$len+=1;
}
echo substr($str,0,$len).'
';
?>