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 相关文章推荐
理解PHP5中static和const关键字的区别
Mar 19 PHP
PHP的cURL库功能简介 抓取网页、POST数据及其他
Apr 07 PHP
php数组函数序列 之array_count_values() 统计数组中所有值出现的次数函数
Oct 29 PHP
php中unlink()、mkdir()、rmdir()等方法的使用介绍
Dec 21 PHP
解决phpmyadmin中缺少mysqli扩展问题的方法
May 06 PHP
PHP CURL获取cookies模拟登录的方法
Nov 04 PHP
PHP函数microtime()用法与说明
Dec 04 PHP
php使用imagick模块实现图片缩放、裁剪、压缩示例
Apr 17 PHP
PHP读取txt文本文件并分页显示的方法
Mar 11 PHP
PHP curl伪造IP地址和header信息代码实例
Apr 27 PHP
php+ajax实现无刷新动态加载数据技术
Apr 28 PHP
Laravel Intervention/image图片处理扩展包的安装、使用与可能遇到的坑详解
Nov 14 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发电子邮件
2006/10/09 PHP
PHP函数实现从一个文本字符串中提取关键字的方法
2015/07/01 PHP
不用AJAX和IFRAME,说说真正意义上的ASP+JS无刷新技术
2008/09/25 Javascript
使用JSON.parse将json字符串转换成json对象的时候会出错
2014/09/04 Javascript
jQuery中replaceAll()方法用法实例
2015/01/16 Javascript
javascript中mouseover、mouseout使用详解
2015/07/19 Javascript
javascript中利用柯里化函数实现bind方法
2016/04/29 Javascript
easyui window refresh 刷新两次的解决方法(推荐)
2016/05/18 Javascript
JQuery EasyUI 结合ztrIee的后台页面开发实例
2017/09/01 jQuery
vue+vuex+axios+echarts画一个动态更新的中国地图的方法
2017/12/19 Javascript
JavaScript学习总结(一) ECMAScript、BOM、DOM(核心、浏览器对象模型与文档对象模型)
2018/01/07 Javascript
iconfont的三种使用方式详解
2018/08/05 Javascript
vue 自定义提示框(Toast)组件的实现代码
2018/08/17 Javascript
微信小程序自定义组件实现环形进度条
2020/11/17 Javascript
[01:13:01]2018DOTA2亚洲邀请赛 4.4 淘汰赛 TNC vs VG 第三场
2018/04/05 DOTA
[32:30]夜魇凡尔赛茶话会 第一期01:谁是卧底
2021/03/11 DOTA
python使用cPickle模块序列化实例
2014/09/25 Python
Python简单实现TCP包发送十六进制数据的方法
2016/04/16 Python
Python递归函数定义与用法示例
2017/06/02 Python
python 简单搭建阻塞式单进程,多进程,多线程服务的实例
2017/11/01 Python
Python基础学习之函数方法实例详解
2019/06/18 Python
Python+unittest+requests+excel实现接口自动化测试框架
2020/12/23 Python
HTML5 Plus 实现手机APP拍照或相册选择图片上传功能
2016/07/13 HTML / CSS
美国婴儿和儿童家具网上商店:ABaby.com
2018/07/02 全球购物
main 函数执行以前,还会执行什么代码
2013/04/17 面试题
办公室文书岗位职责
2013/12/16 职场文书
园林技术专业求职信
2014/07/28 职场文书
民族学专业求职信
2014/07/28 职场文书
蛋糕店创业计划书范文
2014/09/21 职场文书
居委会四风问题个人对照检查材料
2014/09/25 职场文书
2014年公路养护工作总结
2014/12/04 职场文书
地陪导游欢迎词
2015/01/26 职场文书
扬州个园导游词
2015/02/06 职场文书
灵魂歌王观后感
2015/06/17 职场文书
酒店宣传语大全
2015/07/13 职场文书
深入探讨opencv图像矫正算法实战
2021/05/21 Python