smarty中改进truncate使其支持中文的方法


Posted in PHP onMay 30, 2016

本文实例讲述了smarty中改进truncate使其支持中文的方法。分享给大家供大家参考,具体如下:

smarty的truncate不支持中文的截取。将smarty目录下plugins中的modifier.truncate.php改成下面这个样子就可以了

<?php
/*
* Smarty plugin
* -------------------------------------------------------------
* Type:   modifier
* Name:   truncate
* Purpose: Truncate a string to a certain length if necessary,
*      optionally splitting in the middle of a word, and 
*      appending the $etc string.
* Update:  change substr to msubstr and add fun msubstr.so it
*      can bu used in chinese charset.
* -------------------------------------------------------------
*/
function smarty_modifier_truncate($string, $length = 80, $etc = '...', $break_words = false)
{
  if ($length == 0)
    return '';
  if (strlen($string) > $length) {
    $length -= strlen($etc);
    if (!$break_words)
      $string = preg_replace('//s+?(/S+)?$/', '', SubstrGB($string, 0, $length+1));
    return SubstrGB($string, 0, $length).$etc;
  } else
    return $string;
}
function SubstrGB($str,$start,$len){
  for($i=0;$i<$start+$len;$i++){
    $tmpstr=(ord($str[$i])>=161 && ord($str[$i])<=254&& ord($str[$i+1])>=161 && ord($str[$i+1])<=254)?$str[$i].$str[++$i]:$tmpstr=$str[$i];
    if ($i>=$start&&$i<($start+$len))$tmp .=$tmpstr;
  }
  return $tmp;
}
/* vim: set expandtab: */
?>

希望本文所述对大家基于smarty模板的PHP程序设计有所帮助。

PHP 相关文章推荐
php正则过滤html标签、空格、换行符的代码(附说明)
Oct 25 PHP
thinkphp文件处理类Dir.class.php的用法分析
Dec 08 PHP
smarty缓存用法分析
Dec 16 PHP
WebQQ最新登陆协议的用法
Dec 22 PHP
PHP框架Laravel学习心得体会
Oct 28 PHP
Symfony学习十分钟入门经典教程
Feb 03 PHP
laravel自定义分页效果
Jul 23 PHP
php判断str字符串是否是xml格式数据的方法示例
Jul 26 PHP
laravel获取不到session的三种解决办法【推荐】
Sep 16 PHP
深入理解 PHP7 中全新的 zval 容器和引用计数机制
Oct 15 PHP
php实现的PDO异常处理操作分析
Dec 27 PHP
PHP simplexml_load_string()函数实例讲解
Feb 03 PHP
php实现的一段简单概率相关代码
May 30 #PHP
PHP中的表达式简述
May 29 #PHP
一个简单的php路由类
May 29 #PHP
解读PHP中上传文件的处理问题
May 29 #PHP
round robin权重轮循算法php实现代码
May 28 #PHP
php自定义中文字符串截取函数substr_for_gb2312及substr_for_utf8示例
May 28 #PHP
php获取一定范围内取N个不重复的随机数
May 28 #PHP
You might like
使用NetBeans + Xdebug调试PHP程序的方法
2011/04/12 PHP
php无限极分类递归排序实现方法
2014/11/11 PHP
php使用gettimeofday函数返回当前时间并存放在关联数组里
2015/03/19 PHP
如何打开php的gd2库
2017/02/09 PHP
javascript中创建对象的三种常用方法
2010/12/30 Javascript
js控制滚动条缓慢滚动到顶部实现代码
2013/03/20 Javascript
window.onerror()的用法与实例分析
2016/01/27 Javascript
JS动态增删表格行的方法
2016/03/03 Javascript
javascript实现右下角广告框效果
2017/02/01 Javascript
详解angular2实现ng2-router 路由和嵌套路由
2017/03/24 Javascript
nodejs对express中next函数的一些理解
2017/09/08 NodeJs
JavaScript编程设计模式之构造器模式实例分析
2017/10/25 Javascript
nodejs项目windows下开机自启动的方法
2017/11/22 NodeJs
微信小程序实现评论功能
2018/11/28 Javascript
解决removeEventListener 无法清除监听的问题
2020/10/30 Javascript
[07:09]2014DOTA2国际邀请赛-Newbee再次发威成功晋级决赛
2014/07/19 DOTA
Python内置函数之filter map reduce介绍
2014/11/30 Python
python使用正则表达式来获取文件名的前缀方法
2018/10/21 Python
基于Python实现人脸自动戴口罩系统
2020/02/06 Python
Keras实现支持masking的Flatten层代码
2020/06/16 Python
Python爬虫模拟登陆哔哩哔哩(bilibili)并突破点选验证码功能
2020/12/21 Python
如何用Django处理gzip数据流
2021/01/29 Python
纯CSS3实现的8种Loading动画效果
2014/07/05 HTML / CSS
沪江旗下的海量优质课程平台:沪江网校
2017/11/07 全球购物
澳大利亚领先的美容护肤品零售商之一:SkincareStore
2018/01/22 全球购物
船餐厅和泰晤士河餐饮游轮:Bateaux London
2018/03/19 全球购物
函授大专自我鉴定
2013/11/01 职场文书
大学班长的职责
2014/01/27 职场文书
个人简历自我评价范文
2014/02/04 职场文书
小学安全教育材料
2014/02/17 职场文书
材料加工工程求职信
2014/02/19 职场文书
文明家庭先进事迹材料
2014/05/14 职场文书
2014旅游局党组书记党建工作汇报材料
2014/11/02 职场文书
党的群众路线教育实践活动先进个人材料
2014/12/24 职场文书
财政局长个人总结
2015/03/04 职场文书
PostgreSQL将数据加载到buffer cache中操作方法
2021/04/16 PostgreSQL