/*
* 可以避免乱码的截取汉字
* 参数 $str 为字符串,$start 为开始字符,$len 结束字符
* 返回截取后的字符
*/
function msubstr($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;
}
?>
<?php
/*
#$start为起始位置,默认为0
#$len为截取长度,如遇半个汉字,则自动降低长度而不是取整个汉字,保证了不会超过规定的长度
*/
function substr_cn($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))>0xa1)
{
$tmpstr.=substr($str,$i,2);
$i++;
}
else
$tmpstr.=substr($str,$i,1);
}
}
if(strlen($tmpstr)>$len)
{
$len--;
return substr_cn($str,$len,$start);
}
return $tmpstr;
}
//-------------------------------------------------
//示例
echo substr_cn("123as中国PHP联盟",9,1);
echo "<br>";
echo substr_cn("123as中国PHP联盟",10);
?>