TaoGOGO

欢迎您光临,这就是TaoGOGO的网络小窝!
纯css实现的尖角框»
«ie6下png图片不透明bug的解决方法集锦

真正完美截取utf8和gb2312字符串的php函数

最近在给我们网站做个手机wap,从网上找了许多截取utf8和gb2312字符串的php函数,可惜都是只能截取某个长度,那个从第几个字符截取的参数要么没有,要么就根本没有任何作用~经过本人的刻苦搜索,终于找到一个真正完美截取真正完美截取utf8和gb2312字符串的php函数,与大家分享一下。

function cut_str($string, $sublen=10, $start = 0, $code = 'UTF-8')
{
 if($code == 'UTF-8')
 {
 $pa = "/[\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]/";
 preg_match_all($pa, $string, $t_string);


//if(count($t_string[0]) - $start > $sublen) return join('', array_slice($t_string[0], $start, $sublen))."...";
 return join('', array_slice($t_string[0], $start, $sublen));
 }
 else
 {
 $start = $start*2;
 $sublen = $sublen*2;
 $strlen = strlen($string);
 $tmpstr = '';
 for($i=0; $i<$strlen; $i++)
 {
 if($i>=$start && $i<($start+$sublen))
 {
 if(ord(substr($string, $i, 1))>129) $tmpstr.= substr($string, $i, 2);
 else $tmpstr.= substr($string, $i, 1);
 }
 if(ord(substr($string, $i, 1))>129) $i++;
 }
 //if(strlen($tmpstr)<$strlen ) $tmpstr.= "...";
 return $tmpstr;
 }
}

希望能给大家带来帮助.

想收藏或者和大家分享这篇好文章→ 分享家:Addthis中国

相关阅读:

Tags: php php字符串截取 |Comments:(4)|read:(403)

4 to "真正完美截取utf8和gb2312字符串的php函数"

  1. WooGooo
    回复 # 89005
    2009-10-30 at 12:26

    其实……我不会php

  2. kangzj
    回复 # 89007
    2009-10-30 at 12:58

    php开启mb_string了的话,直接可以截取,没有问题的

  3. TaoGOGO
    回复 # 90001
    2009-10-31 at 13:38

    @kangzj 我们的服务器模块开了很少~呵呵

  4. wuleilei
    回复 # 96001
    2009-11-11 at 12:59

    代码不错~~
    很好用,

 

Leave a Reply




请输入计算结果:8+7

:) lol 8) mrgreen evil arrow :( more »

Tao公告

一定要努力啊,要做生活的强者!不要懈怠!@2009.12.22

搜索

G Show!