php截取汉字方法,PHP截取中文字符串的方法

@header('Content-type: text/html; charset=UTF-8');

$arr = "sa撒的发dfa多少sfd看sdf得12上24飞452机.@$#^辣^&%椒粉b";

/******************************************************************

* 程序一:PHP截取中文字符串方法

* 截取中文字符串时出现乱码

****************************************************************/

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;

}

echo msubstr($arr, 0, 15);

echo "



";

/******************************************************************

* PHP截取UTF-8字符串,解决半字符问题。

* 英文、数字(半角)为1字节(8位),中文(全角)为3字节

* @return 取出的字符串, 当$len小于等于0时, 会返回整个字符串

* @param $str 源字符串

* $len 左边的子串的长度

****************************************************************/

function utf_substr($str,$len)

{

for($i=0;$i

{

$temp_str=substr($str,0,1);

if(ord($temp_str) > 127)

{

$i++;

if($i

{

$new_str[]=substr($str,0,3);

$str=substr($str,3);

}

}

else

{

$new_str[]=substr($str,0,1);

$str=substr($str,1);

}

}

return join($new_str);

}

echo utf_substr($arr, 39);

echo "



";

/******************************************************************

* PHP截取UTF-8字符串,解决半字符问题。

* 截取utf-8字符串,截取后,用 ...代替被截取的部分

* $length 左边的子串的长度

****************************************************************/

function cutstr($string, $length) {

preg_match_all("/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|\xe0[\xa0-\xbf][\x80-\xbf]|[\xe1-\xef][\x80-\xbf][\x80-\xbf]|\xf0[\x90-\xbf][\x80-\xbf][\x80-\xbf]|[\xf1-\xf7][\x80-\xbf][\x80-\xbf][\x80-\xbf]/", $string, $info);

for($i=0; $i

$wordscut .= $info[0][$i];

$j = ord($info[0][$i]) > 127 ? $j + 2 : $j + 1;

if ($j > $length - 3) {

return $wordscut." ...";

}

}

return join('', $info[0]);

}

echo cutstr($arr,14);

echo "



";

?>

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值