PS:原创文章,如需转载,请注明出处,谢谢!
本文地址:http://flyer0126.iteye.com/blog/1508695
/**
* 截取处理UTF-8编码字符串
* 规则:中文2个字符,数字、英文1个字符;截取末尾不足一个汉字的则舍弃。
* @param string $str
* @param int $len 截取出的字符长度
* @author flyer0126
* @since 2012/05/03
*/
function substr_utf8_cn($str, $len)
{
$length = strlen($str);
if ($length <= $len)
{
return $str;
}
$result_str = '';
for($i=0;$i<$len;$i++)
{
$temp_str=substr($str,0,1);
if(ord($temp_str) > 127)
{
if($i+1<$len)
{
$result_str .= substr($str,0,3);
$str = substr($str,3);
}
$i++;
}
else
{
$result_str .= substr($str,0,1);
$str=substr($str,1);
}
}
return $result_str;
}
//Useage:
$str1 = '截取处理字符串测试内容';
$str2 = '11aa22bb截取处理字符串测试内容';
$str3 = '#$%^截取处理字符串测试内容';
echo substr_utf8_cn($str1, 9, '...'),PHP_EOL;
echo substr_utf8_cn($str2, 9),PHP_EOL;
echo substr_utf8_cn($str3, 9);
//Outputs:
/**
截取处理
11aa22bb
#$%^截取
**/