php 字符串截取函数

/** 
* 格式化中英文字符串 
* 多字节字符,是按双字节宽度截取的 
* 
* @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; 
} 


 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值