截取中英文混杂字符串mb_strimwidth包为函数substr_cn的备忘。

jackxiang 2009-3-26 14:42 | |
同时在smarty中增加了这个函数的调用。可以通过模板调用。
增加的方法名是:truncate_cn
实例:{$title| truncate_cn :80:’ 'utf-8’:’…’}
默认情况下,省略字符为… ,如果不需要省略字符,最后一下用’’。
我建议模板中可以使用这种方法,提出如果在模板中添加增加编译负担,但是
smarty模板编译一次,永久使用(只要模板没有修改)。所以编译也不会造成多少损耗。
函数的原型如下:
  /**
   * 中英文混杂字符串截取
   *
   * @param string $string
   * 原字符串
   * @param interger $length
   * 截取的字符数
   * @param string $etc
   * 省略字符
   * @param string $charset
   * 原字符串的编码
   *
   * @return string
   */
function substr_cn($string, $length = 80, $charset = 'UTF-8', $etc = '...') {
    if(mb_strwidth($string,'UTF-8')<$length) return $string;
    return mb_strimwidth($string,0,$length,'',$charset) . $etc;
  }



有一个哥们写了个函数:


function msubstr($str, $start, $len) {
     $tmpstr = "";
     $strlen = $start + $len;
     for($i = 0; $i < $strlen; $i++) {
         if(ord(substr($str, $i, 1)) > 0xa0) {
             $tmpstr .= substr($str, $i, 2);
             $i++;
         } else
             $tmpstr .= substr($str, $i, 1);
     }
     return $tmpstr;
  }

作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:https://jackxiang.com/post/1669/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!


最后编辑: jackxiang 编辑于2009-3-26 15:34
评论列表
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]