在使用php截取字符串的时候
发现php原生函数substr是不支持截取中文字符串的
以下代码可以解决php截取中文字符串出现的乱码及各类问题
截取GB2312中文字符串
<?php
//截取中文字符串
function mysubstr($str, $start, $len){
$tmpstr = "";
$strlen = $start + $len;
for($i = 0; $i < $strlen; $i++){
if(ord(substr($str, $i, 1)) > 0xa0){
$tmpstr .= substr($str, $i, 2);
$i++;
}else
$tmpstr .= substr($str, $i, 1);
}
return $tmpstr;
}
?>
截取utf8编码的多字节字符串
<?php
//截取utf8字符串
function utf8Substr($str, $from, $len){
return preg_replace('#^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$from.'}'.
'((?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$len.'}).*#s',
'$1',$str);
}
?>
