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写的简易聊天室代码
Jun 04 PHP
php中根据变量的类型 选择echo或dump
Jul 05 PHP
php获取ip的三个属性区别介绍(HTTP_X_FORWARDED_FOR,HTTP_VIA,REMOTE_ADDR)
Sep 23 PHP
PHP命令行脚本接收传入参数的三种方式
Aug 20 PHP
thinkPHP使用post方式查询时分页失效的解决方法
Dec 09 PHP
PHP查看SSL证书信息的方法
Sep 22 PHP
php 5.4 全新的代码复用Trait详解
Jan 05 PHP
laravel 事件/监听器实例代码
Apr 12 PHP
thinkphp5.1框架容器与依赖注入实例分析
Jul 23 PHP
thinkphp5使html5实现动态跳转的例子
Oct 16 PHP
TP5框架使用QueryList采集框架爬小说操作示例
Mar 26 PHP
使用Entrust扩展包在laravel 中实现RBAC的功能
Mar 16 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
PHP生成sitemap.xml地图函数
2013/11/13 PHP
PHP 正则表达式常用函数
2014/08/17 PHP
PHPExcel读取EXCEL中的图片并保存到本地的方法
2015/02/14 PHP
php微信开发之百度天气预报
2016/11/18 PHP
PHP基于双向链表与排序操作实现的会员排名功能示例
2017/12/26 PHP
PHP时间函数使用详解
2019/03/21 PHP
Tab页界面,用jQuery及Ajax技术实现
2009/09/21 Javascript
javascript window对象属性整理
2009/10/24 Javascript
javascript prototype原型操作笔记
2009/12/07 Javascript
jquery选择器之基本过滤选择器详解
2014/01/27 Javascript
常用DOM整理
2015/06/16 Javascript
7个jQuery最佳实践
2016/01/12 Javascript
将json转换成struts参数的方法
2016/11/08 Javascript
Vue 组件间的样式冲突污染
2017/08/31 Javascript
修改UA在PC中访问只能在微信中打开的链接方法
2017/11/27 Javascript
JavaScript类数组对象转换为数组对象的方法实例分析
2018/07/24 Javascript
bootstrap table实现横向合并与纵向合并
2019/07/18 Javascript
JavaScript实现放大镜效果代码示例
2020/04/29 Javascript
Jquery cookie插件实现原理代码解析
2020/08/04 jQuery
Python使用urllib2获取网络资源实例讲解
2013/12/02 Python
python网络编程之TCP通信实例和socketserver框架使用例子
2014/04/25 Python
Django中ORM表的创建和增删改查方法示例
2017/11/15 Python
PyCharm-错误-找不到指定文件python.exe的解决方法
2019/07/01 Python
Python 转换文本编码实现解析
2019/08/27 Python
python argparse模块通过后台传递参数实例
2020/04/20 Python
使用matplotlib的pyplot模块绘图的实现示例
2020/07/12 Python
Python中BeautifulSoup通过查找Id获取元素信息
2020/12/07 Python
解决pytorch下出现multi-target not supported at的一种可能原因
2021/02/06 Python
匡威德国官网:Converse德国
2019/01/26 全球购物
Bluebella法国官网:英国性感内衣品牌
2019/05/03 全球购物
爱尔兰旅游网站:ebookers.ie
2020/01/24 全球购物
学习党的群众路线教育实践活动心得体会
2014/03/01 职场文书
内勤岗位职责
2015/02/10 职场文书
财务总监岗位职责范本
2015/04/03 职场文书
python实现过滤敏感词
2021/05/08 Python
Nginx的gzip相关介绍
2022/05/11 Servers