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中用hash实现的数组
Jul 17 PHP
PHP sprintf() 函数的应用(定义和用法)
Jun 29 PHP
php仿QQ验证码的实例分析
Jul 01 PHP
php使用异或实现的加密解密实例
Sep 04 PHP
PHP CURL 内存泄露问题解决方法
Feb 12 PHP
PHP+Ajax异步带进度条上传文件实例
Nov 01 PHP
PHP文件管理之实现网盘及压缩包的功能操作
Sep 20 PHP
PHP根据树的前序遍历和中序遍历构造树并输出后序遍历的方法
Nov 10 PHP
Thinkphp5框架简单实现钩子(Hook)行为的方法示例
Sep 03 PHP
php 使用expat方式解析xml文件操作示例
Nov 26 PHP
PHP超级全局变量【$GLOBALS,$_SERVER,$_REQUEST等】用法实例分析
Dec 11 PHP
有关PHP 中 config.m4 的探索
Aug 26 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
探讨:使用XMLSerialize 序列化与反序列化
2013/06/08 PHP
Js中的onblur和onfocus事件应用介绍
2013/08/27 Javascript
js中apply方法的使用详细解析
2013/11/04 Javascript
判断JS对象是否拥有某种属性的两种方式
2013/12/02 Javascript
IE下Ajax缓存问题的快速解决方法(get方式)
2014/01/09 Javascript
JQuery中使用.each()遍历元素学习笔记
2014/11/08 Javascript
node.js中的fs.closeSync方法使用说明
2014/12/17 Javascript
Jquery+ajax+JAVA(servlet)实现下拉菜单异步取值
2016/03/23 Javascript
JavaScript禁止复制与粘贴的实现代码
2016/05/16 Javascript
原生js获取元素样式的简单方法
2016/08/06 Javascript
js实现移动端导航点击自动滑动效果
2017/07/18 Javascript
angular4 共享服务在多个组件中数据通信的示例
2018/03/30 Javascript
JavaScript 判断对象中是否有某属性的常用方法
2018/06/14 Javascript
微信小程序实现单列下拉菜单效果
2019/04/25 Javascript
[05:08]2014DOTA2国际邀请赛 Hao专访复仇的胜利很爽
2014/07/15 DOTA
Python 中的with关键字使用详解
2016/09/11 Python
PyQt5 QSerialPort子线程操作的实现
2018/04/21 Python
Python实现的NN神经网络算法完整示例
2018/06/19 Python
python画图——实现在图上标注上具体数值的方法
2019/07/08 Python
selenium2.0中常用的python函数汇总
2019/08/05 Python
python 实现在无序数组中找到中位数方法
2020/03/03 Python
Python生成器实现简单&quot;生产者消费者&quot;模型代码实例
2020/03/27 Python
python相对企业语言优势在哪
2020/06/12 Python
纯css3实现照片墙效果
2014/12/26 HTML / CSS
澳大利亚实惠时尚女装商店:Katies
2019/06/16 全球购物
用Java语言将一个键盘输入的数字转化成中文输出
2013/01/25 面试题
广告学专业推荐信范文
2013/11/23 职场文书
物业管理毕业生个人的求职信
2013/11/30 职场文书
售后专员岗位职责
2013/12/08 职场文书
高二历史教学反思
2014/01/25 职场文书
大四自我鉴定
2014/02/08 职场文书
书法比赛获奖感言
2014/02/10 职场文书
食品安全汇报材料
2014/08/18 职场文书
教师节感想
2015/08/11 职场文书
领导干部学习心得体会
2016/01/23 职场文书
Python  序列化反序列化和异常处理的问题小结
2022/12/24 Python