手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆

支持中文的截取字符函数,不同编码下中文字符的范围一目了然

首页 > PHP >

这是一个简单的函数,或许对你我都有用吧。
以前也有类似的文章,这个我仍然和上次一样,用来记录这些正则,无它。。。
原文作者阿彪,来自:http://www.bloomandkevin.cn/2009/02/blog-post.html

PHP代码
  1. <?php  
  2. /* 
  3. * 中文截取,支持gb2312,gbk,utf-8,big5 
  4. * 
  5. * @param string $str 要截取的字串 
  6. * @param int $start 截取起始位置 
  7. * @param int $length 截取长度 
  8. * @param string $charset utf-8|gb2312|gbk|big5 编码 
  9. * @param $suffix 是否加尾缀 
  10. */  
  11. public function csubstr($str$start=0, $length$charset="utf-8"$suffix=true)  
  12. {  
  13.     if(function_exists("mb_substr"))  
  14.         return mb_substr($str$start$length$charset);  
  15.   
  16.     $re['utf-8'] = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xff][\x80-\xbf]{3}/";  
  17.     $re['gb2312'] = "/[\x01-\x7f]|[\xb0-\xf7][\xa0-\xfe]/";  
  18.     $re['gbk'] = "/[\x01-\x7f]|[\x81-\xfe][\x40-\xfe]/";  
  19.     $re['big5'] = "/[\x01-\x7f]|[\x81-\xfe]([\x40-\x7e]|\xa1-\xfe])/";  
  20.   
  21.     preg_match_all($re[$charset], $str$match);  
  22.     $slice = join("",array_slice($match[0], $start$length));  
  23.     if($suffixreturn $slice."…";  
  24.      
  25.     return $slice;  
  26. }  
  27. ?>  



本站采用创作共享版权协议, 要求署名、非商业和保持一致. 本站欢迎任何非商业应用的转载, 但须注明出自"易栈网-膘叔", 保留原始链接, 此外还必须标注原文标题和链接.

Tags: 中文截取

« 上一篇 | 下一篇 »

发表评论

评论内容 (必填):