首页 > Web开发 > 详细

php截取字符串方法, 让英文,中文,中英文混合差不多长

时间:2014-04-14 22:27:57      阅读:568      评论:0      收藏:0      [点我收藏+]

之前在遇到这个事情的时候  在网上搜了一个方法来解决. 循环字符串中的每一个字符, 再去计算出整个的长度来截取.

效果是可以达到的, 但是效率不高...

公司某高人写了个函数, 解决了这个问题.

bubuko.com,布布扣
 1 /*
 2  * functions for limiting maximal text length
 3 */
 4 function strmaxtextlen($input, $len = 60) {
 5    $bytelen = mb_strlen($input, ‘ASCII‘);
 6    $strlen = JString::strlen($input);  
 7            
 8    if($bytelen == $strlen) {
 9       /* only ascii. Most utf-8 chars are 3 bytes long, so we can cut at least 2 times of $len */
10       if($bytelen > 2* $len)
11          return mb_strcut($input, 0, 2 * $len)."...";
12    }
13    else {
14       /* either mixed or only multiple-byte chars, we cut x times of $len */
15       $rlen = $bytelen/$strlen;       
16       if($bytelen > $rlen * $len)
17          return mb_strcut($input, 0, $rlen * $len)."...";
18    }
19               
20    return $input;
21 }
bubuko.com,布布扣

JString::strlen是joomla自带的函数, 支持多语言, 每个字(不论哪种鸟文)都算作一个长度.

 

php截取字符串方法, 让英文,中文,中英文混合差不多长,布布扣,bubuko.com

php截取字符串方法, 让英文,中文,中英文混合差不多长

原文:http://www.cnblogs.com/rand7/p/3663597.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!