/**
* 格式化中英文字符串
* 多字节字符,是按双字节宽度截取的
*
* @param $str 字符串
* @param $len 截取的字节数
*
* @return 字符串
*
*/
function format_string($str,$len,$end='...')
{
//获取总的字节数
$ll = strlen($str);
//字节数
$i = 0;
//显示字节数
$l = 0;
//返回的字符串
$s = $str;
while ($i < $ll)
{
//获取字符的asscii
$byte = ord($str{$i});
//如果是1字节的字符
if ($byte < 0x80)
{
$l++;
$i++;
}
//如果是2字节字符
elseif ($byte < 0xe0)
{
$l += 2;
$i += 2;
}
//如果是3字节字符
elseif ($byte < 0xf0)
{
$l += 2;
$i += 3;
}
//其他,基本用不到
else
{
$l += 2;
$i += 4;
}
//如果显示字节达到所需长度
if ($l >= $len)
{
//截取字符串
$s = substr($str, 0, $i);
//如果所需字符串字节数,小于原字符串字节数
if($i < $ll)
{
//则加上省略符号
$s = $s . $end; break;
}
//跳出字符串截取
break;
}
}
//返回所需字符串
return $s;
}
相关资源:JS PHP字符串截取函数实现原理解析