PHP字符截取函数,兼容各类gbk,utf-8编码

在PHP中字符截取函数substr只能截取全英文才不会出现乱码如果里面有中文肯定是无法截取的,下面小编来给大家介绍两个兼容各类gbk,utf-8编码字符串截取函数,实例代码如下:

  1. function CsubStrPro($str$start$length$charset = "utf-8"$suffix = false) 
  2.     if (function_exists ( "mb_substr" )) 
  3.         return mb_substr ( $str$start$length$charset ); 
  4.     $re ['utf-8'] = "/[x01-x7f]|[xc2-xdf][x80-xbf]|[xe0-xef][x80-xbf]{2}|[xf0-xff][x80-xbf]{3}/"
  5.     $re ['gb2312'] = "/[x01-x7f]|[xb0-xf7][xa0-xfe]/"
  6.     $re ['gbk'] = "/[x01-x7f]|[x81-xfe][x40-xfe]/"
  7.     $re ['big5'] = "/[x01-x7f]|[x81-xfe]([x40-x7e]|xa1-xfe])/"
  8.     preg_match_all ( $re [$charset], $str$match ); 
  9.     $slice = join ( ""array_slice ( $match [0], $start$length ) ); 
  10.     if ($suffix
  11.         return $slice . "…"
  12.     return $slice

实例代码二:

  1. function subString_UTF8($str$start$lenth
  2.    { 
  3.        $len = strlen($str); 
  4.        $r = array(); 
  5.        $n = 0; 
  6.        $m = 0; 
  7.        for($i = 0; $i < $len$i++) { 
  8.            $x = substr($str$i, 1); 
  9.            $a  = base_convert(ord($x), 10, 2); 
  10.            $a = substr('00000000'.$a, -8); 
  11.            if ($n < $start){ 
  12.                if (substr($a, 0, 1) == 0) { 
  13.                }elseif (substr($a, 0, 3) == 110) { 
  14.                    $i += 1; 
  15.                }elseif (substr($a, 0, 4) == 1110) { 
  16.                    $i += 2; 
  17.                } 
  18.                $n++; 
  19.            }else
  20.                if (substr($a, 0, 1) == 0) { 
  21.                    $r[ ] = substr($str$i, 1); 
  22.                }elseif (substr($a, 0, 3) == 110) { 
  23.                    $r[ ] = substr($str$i, 2); 
  24.                    $i += 1; 
  25.                }elseif (substr($a, 0, 4) == 1110) { 
  26.                    $r[ ] = substr($str$i, 3); 
  27.                    $i += 2; 
  28.                }else
  29.                    $r[ ] = ''
  30.                } 
  31.                if (++$m >= $lenth){ 
  32.                    break
  33.                } 
  34.            } 
  35.        } 
  36.        return $r
  37.    } // End subString_UTF8; 
  38. // End String 

由于此函数返回的是一个数组,因此要配合join函数来显示字符串:join('',subString_UTF8($str, $start, $lenth));,在页面显示的时候还可以在此语句后面连一个"…"

波比源码 – 精品源码模版分享 | www.bobi11.com
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 本站源码并不保证全部能正常使用,仅供有技术基础的人学习研究,请谨慎下载
8. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!

波比源码 » PHP字符截取函数,兼容各类gbk,utf-8编码

1 评论

发表评论

Hi, 如果你对这款模板有疑问,可以跟我联系哦!

联系站长
赞助VIP 享更多特权,建议使用 QQ 登录
喜欢我嘛?喜欢就按“ctrl+D”收藏我吧!♡