substr中文乱码问题的解决,使substring函数代替

substr函数是 PHP 内置函数,不足的地方是取汉字时存在半角全角无法区别出现 乱码 ,提供substring函数来代替这段函数,来解决这个 问题

function substring($str, $start, $length){ //比较好用字符串截取函数
$len = $length;
if($length < 0){
$str = strrev($str); 
$len = -$length;
}
$len= ($len < strlen($str)) ? $len : strlen($str);
for ($i= $start; $i < $len; $i ++)
{
       if (ord(substr($str, $i, 1)) > 0xa0)
       {
         $tmpstr .= substr($str, $i, 2);
         $i++;
       } else {
         $tmpstr .= substr($str, $i, 1);
       }
}
if($length < 0) $tmpstr = strrev($tmpstr);
return $tmpstr;
}

哈哈,不过现在用扩展函数了!

  1. <?php
  2. $str =  '我是一串比较长的中文-www.ooso.net';
  3. echo  "mb_substr:" . mb_substr($str,  06'utf-8');
  4. echo  "<br>";
  5. echo  "mb_strcut:" . mb_strcut($str,  06'utf-8');
  6. ?>

mb_substr:我是一串比较
mb_strcut:我是

从上面的例子可以看出,mb_substr是按字来切分字符,而mb_strcut是按字节来切分字符,但是都不会产生半个字符的现象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值