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 05 PHP
ThinkPHP 连接Oracle数据库的详细教程[全]
Jul 16 PHP
PHP5.4中json_encode中文转码的变化小结
Jan 30 PHP
基于php常用函数总结(数组,字符串,时间,文件操作)
Jun 27 PHP
php中url函数介绍及使用示例
Feb 13 PHP
PHP使用range协议实现输出文件断点续传代码实例
Jul 04 PHP
PHP 使用memcached简单示例分享
Mar 05 PHP
PHP模拟http请求的方法详解
Nov 09 PHP
PHP连接sftp并下载文件的方法教程
Aug 26 PHP
PHP实现批量修改文件名的方法示例
Sep 18 PHP
laravel config文件配置全局变量的例子
Oct 13 PHP
自定义Laravel (monolog)日志位置,并增加请求ID的实现
Oct 17 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支付系统设计与典型案例分享
2016/08/02 PHP
PHP在线打包下载功能示例
2016/10/15 PHP
兼容IE和FF的js脚本代码小结(比较常用)
2010/12/06 Javascript
仅IE6/7/8中innerHTML返回值忽略英文空格的问题
2011/04/07 Javascript
JS 表单验证大全
2011/11/23 Javascript
jQuery+CSS实现菜单滑动伸展收缩(仿淘宝)
2013/03/22 Javascript
js控制浏览器全屏示例代码
2014/02/20 Javascript
js中json处理总结之JSON.parse
2016/10/14 Javascript
详解微信小程序中的页面代码中的模板的封装
2017/10/12 Javascript
fullpage.js最后一屏滚动方式
2018/02/06 Javascript
详解vue服务端渲染浏览器端缓存(keep-alive)
2018/10/12 Javascript
详解vue 路由跳转四种方式 (带参数)
2019/04/28 Javascript
js 获取本周、上周、本月、上月、本季度、上季度的开始结束日期
2020/02/01 Javascript
原生js实现日期选择插件
2020/05/21 Javascript
微信小程序的引导页实现代码
2020/06/24 Javascript
详解ES6中class的实现原理
2020/10/03 Javascript
js异步接口并发数量控制的方法示例
2020/11/22 Javascript
[06:23]2014DOTA2西雅图国际邀请赛 小组赛7月12日TOPPLAY
2014/07/12 DOTA
基python实现多线程网页爬虫
2015/09/06 Python
Python下的Softmax回归函数的实现方法(推荐)
2017/01/26 Python
Python3计算三角形的面积代码
2017/12/18 Python
简单了解python协程的相关知识
2019/08/31 Python
利用Python中的Xpath实现一个在线汇率转换器
2020/09/09 Python
python对输出的奇数偶数排序实例代码
2020/12/04 Python
英国最大的汽车交易网站:Auto Trader UK
2016/09/23 全球购物
美国在线面料商店:Fashion Fabrics Club
2020/01/31 全球购物
计算机应用职专应届生求职信
2013/11/12 职场文书
工程部主管岗位职责
2013/11/17 职场文书
如何写你的创业计划书
2014/01/07 职场文书
人力资源部经理的岗位职责
2014/03/04 职场文书
班长演讲稿范文
2014/04/24 职场文书
五心教育心得体会
2014/09/04 职场文书
争先创优心得体会
2014/09/12 职场文书
先进事迹材料范文
2014/12/29 职场文书
电气工程师岗位职责
2015/02/12 职场文书
2015年安全生产管理工作总结
2015/05/25 职场文书