php查找截取字符串,PHP 字符串截取

//$str = "abcdef◆中华人民共和国";

//$str = "1234567890";

$str = "中华人民共和国abc中华人民共和国中华人民共和国";

$str = cut_str($str, 18);

echo $str;

function cut_str($str, $len){

if(strlen($str) <= $len) return $str;

$n = 0;

$tempstr = '';

for($i = 0; $i < $len; $i++){

if(ord(substr($str,$n,1)) > 224){

$tempstr .= substr($str,$n,3);

$n += 3;

$i++;//把一个中文按两个英文的长度计算

}elseif(ord(substr($str,$n,1)) > 192){

$tempstr .= substr($str,$n,2);

$n += 2;

$i++;//把一个中文按两个英文的长度计算

}else{

$tempstr .= substr($str,$n,1);

$n++;

}

}

return  $tempstr."...";

//在PHP中,用substr()函数截取带有中文字符串的话,可能会出现乱码,这是因为中西文一个字所占有的字节数不一样,而substr的长度是按照字节去算的,在GB2312编码时,一个中文占2个字节,英文为1个字节,而在UTF-8编码当中,一个中文可能占有2个或3个字节,英文或半角标点占1个字节。

//UTF-8编码的字符可能由1~3个字节组成,具体数目可以由第一个字节判断出来(理论上可能更长,但这里假设不超过3个字节)

//第一个字节大于224的,它与它之后的2个字节一起组成一个UTF-8字符。

//第一个字节大于192小于224的,它与它之后的1个字节组成一个UTF-8字符

//否则第一个字节本身就是一个英文字符(包括数字和一小部分标点符号)

//OK ,知道大概的三更,解决起来就轻松多了,于是写下了以下函数用于UTF-8的字符截取:

//PHP也有自带的函数可以用于不同编码的字符串截取,如mb_substr(),但要在php.ini中开启相应的扩展。

}

?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值