同时在smarty中增加了这个函数的调用。可以通过模板调用。
增加的方法名是:truncate_cn
实例:{$title| truncate_cn :80:’ 'utf-8’:’…’}
默认情况下,省略字符为… ,如果不需要省略字符,最后一下用’’。
我建议模板中可以使用这种方法,提出如果在模板中添加增加编译负担,但是
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;
}
* 中英文混杂字符串截取
*
* @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;
}
$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
评论列表