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 相关文章推荐
模拟OICQ的实现思路和核心程序(二)
Oct 09 PHP
屏蔽浏览器缓存另类方法
Oct 09 PHP
PHP新手上路(十一)
Oct 09 PHP
需要发散思维学习PHP
Jun 29 PHP
PHP 缓存实现代码及详细注释
May 16 PHP
php中使用DOM类读取XML文件的实现代码
Dec 14 PHP
探讨:php中在foreach中使用foreach ($arr as &amp;$value) 这种类型的解释
Jun 24 PHP
php实现的一个简单json rpc框架实例
Mar 30 PHP
Yii基于数组和对象的Model查询技巧实例详解
Dec 28 PHP
thinkphp验证码的实现(form、ajax实现验证)
Jul 28 PHP
laravel项目利用twemproxy部署redis集群的完整步骤
May 11 PHP
php桥接模式应用案例分析
Oct 23 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读取大文件的类SplFileObject使用介绍
2014/04/09 PHP
PHP中PCRE正则解析代码详解
2019/04/26 PHP
Thinkphp5.0框架视图view的模板布局用法分析
2019/10/12 PHP
laravel通用化的CURD的实现
2019/12/13 PHP
Jquery知识点二 jquery下对数组的操作
2011/01/15 Javascript
js对象的比较
2011/02/26 Javascript
JS保留两位小数 四舍五入函数的小例子
2013/11/20 Javascript
jquery如何把数组变为字符串传到服务端并处理
2014/04/30 Javascript
javascript监听鼠标滚轮事件浅析
2014/06/05 Javascript
Javascript学习笔记之数组的构造函数
2014/11/23 Javascript
Node.js 中使用 async 函数的方法
2017/11/20 Javascript
浅谈es6中export和export default的作用及区别
2018/02/07 Javascript
通过jquery的ajax请求本地的json文件方法
2018/08/08 jQuery
vue根据进入的路由进行原路返回的方法
2018/09/26 Javascript
require.js 加载过程与使用方法介绍
2018/10/30 Javascript
微信小程序授权登录解决方案的代码实例(含未通过授权解决方案)
2019/05/10 Javascript
jQuery实现B2B网站后台管理系统侧导航
2020/07/08 jQuery
Vue 实现监听窗口关闭事件,并在窗口关闭前发送请求
2020/09/01 Javascript
python实现输入数字的连续加减方法
2018/06/22 Python
python实现双色球随机选号
2020/01/01 Python
pytorch 状态字典:state_dict使用详解
2020/01/17 Python
完美解决pyinstaller打包报错找不到依赖pypiwin32或pywin32-ctypes的错误
2020/04/01 Python
Python生成并下载文件后端代码实例
2020/08/31 Python
python 爬虫如何正确的使用cookie
2020/10/27 Python
BeautifulSoup获取指定class样式的div的实现
2020/12/07 Python
localStorage的过期时间设置的方法详解
2018/11/26 HTML / CSS
美国最大网上鞋店:Zappos
2016/07/25 全球购物
计算机应用专业学生的自我评价分享
2013/11/03 职场文书
优秀信贷员先进事迹
2014/01/31 职场文书
美术毕业生求职信
2014/02/25 职场文书
副校长个人对照检查材料思想汇报
2014/10/04 职场文书
惊涛骇浪观后感
2015/06/05 职场文书
排球赛新闻稿
2015/07/17 职场文书
新学期家长寄语2016
2015/12/03 职场文书
Elasticsearch 索引操作和增删改查
2022/04/19 Python
Python使用Beautiful Soup(BS4)库解析HTML和XML
2022/06/05 Python