PHP截取中文字符

代码
<?php
/**
* 截取中文字符串
*@param str string 待截取的字符串
*@param start int 开始位置
*@param len int 长度
*@return 截取后的字符串
*/
function m_substr($str, $start, $len){
//$strlen存储字符串的总长度
$strlen = $start + $len;
for($i=0; $i<$strlen; $i++){
//如果字符串的首字符大于0xa0,表明是汉字
if(ord(substr($str, $i, 1) > 0xa0)){
//每次取出2个字符赋值给tmpstr ,表示为汉字
$tmpstr .= substr($str, $i, 2);
$i++;
}
else{
$tmpstr .= substr($str, $i, 1);
}
}
return $tmpstr;
}

/**
* 截取中文字符串
*@param str string 待截取的字符串
*@param len int 长度
*@param start=0 int 开始位置
*@return 截取后的字符串
*/
function mm_substr($str,$len,$start=0){
$strlen = strlen($str);
for($i=0; $i<$strlen; $i++){
if($i>=$start && $i<($start+$len)){
if(ord(substr($str, $i, 1)) > 0xa0){
$tmpstr .= substr($str, $i, 2);
}
else{
$tmpstr .= substr($str, $i, 1);
}
}
}
if(strlen($tmpstr) > $len){
$len--;
return mm_substr($str, $len, $start);
}
return $tmpstr;
}


$str = "我是china中国人,欢迎您来到这儿";
echo m_substr($str,1,7);
echo "<br>";
echo mm_substr($str,7);

?>

 

<?php
$str = '这abc样一来我的字符串就不会有乱码^_^';

echo "mb_substr:" . mb_substr($str, 0, 7, 'utf-8');
//结果:这样一来我的字
echo "<br>";

echo "mb_strcut:" . mb_strcut($str, 0, 6, 'utf-8');
//结果:这样
?>

 

posted @ 2010-11-05 20:07  nodot  阅读(333)  评论(0)    收藏  举报