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

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

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

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

php截取字符串方法, 让英文,中文,中英文混合差不多长
 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 }
php截取字符串方法, 让英文,中文,中英文混合差不多长

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

 

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

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

上一篇:LAMP之用户访问网站基本流程图


下一篇:css浮动中避免包含元素高度为0的4种解决方法