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 相关文章推荐
Win9x/ME下Apache+PHP安装配置
Oct 09 PHP
php+mysql分页代码详解
Mar 27 PHP
PHP中ob_start函数的使用说明
Nov 11 PHP
php缓冲 output_buffering和ob_start使用介绍
Jan 30 PHP
PHP的password_hash()使用实例
Mar 17 PHP
PHP字符串比较函数strcmp()和strcasecmp()使用总结
Nov 19 PHP
php阿拉伯数字转中文人民币大写
Dec 21 PHP
php实现基于openssl的加密解密方法
Sep 30 PHP
在云虚拟主机部署thinkphp5项目的步骤详解
Dec 21 PHP
PHP数组去重的更快实现方式分析
May 09 PHP
php微信公众号开发之校园图书馆
Oct 20 PHP
php 原生分页
Apr 01 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
mysql 字段类型说明
2007/04/27 PHP
thinkphp文件处理类Dir.class.php的用法分析
2014/12/08 PHP
谈谈PHP中substr和substring的正确用法及相关参数的介绍
2015/12/16 PHP
CodeIgniter配置之SESSION用法实例分析
2016/01/19 PHP
Laravel中log无法写入问题的解决
2017/06/17 PHP
php实现session共享的实例方法
2019/09/19 PHP
使用基于jquery的gamequery插件做JS乒乓球游戏
2011/07/31 Javascript
JS 获取select(多选下拉)中所选值的示例代码
2013/08/02 Javascript
在javascript中实现函数数组的方法
2013/12/25 Javascript
JavaScript获取flash对象与网上的有所不同
2014/04/21 Javascript
抛弃Nginx使用nodejs做反向代理服务器
2014/07/17 NodeJs
jquery实现模拟百分比进度条渐变效果代码
2015/10/29 Javascript
常用Javascript函数与原型功能收藏(必看篇)
2016/10/09 Javascript
深入理解javascript中concat方法
2016/12/12 Javascript
ionic开发中点击input时键盘自动弹出
2016/12/23 Javascript
微信小程序 picker-view 组件详解及简单实例
2017/01/10 Javascript
jQuery代码实现实时获取时间
2017/01/29 Javascript
微信小程序中button组件的边框设置的实例详解
2017/09/27 Javascript
vue 本地服务不能被外部IP访问的完美解决方法
2018/10/29 Javascript
vue子路由跳转实现tab选项卡
2019/07/24 Javascript
vue中的双向数据绑定原理与常见操作技巧详解
2020/03/16 Javascript
解决基于 keep-alive 的后台多级路由缓存问题
2020/12/23 Javascript
python和shell实现的校验IP地址合法性脚本分享
2014/10/23 Python
Python读取mp3中ID3信息的方法
2015/03/05 Python
python查看模块,对象的函数方法
2018/10/16 Python
Python数据结构与算法(几种排序)小结
2019/06/22 Python
安装好Pycharm后如何配置Python解释器简易教程
2019/06/28 Python
Python异常处理例题整理
2019/07/07 Python
python标准库sys和OS的函数使用方法与实例详解
2020/02/12 Python
什么是CSS3 HSLA色彩模式?HSLA模拟渐变色条
2016/04/26 HTML / CSS
2014年信访维稳工作总结
2014/12/08 职场文书
2015年端午节活动策划书
2015/05/05 职场文书
2015年机关党委工作总结
2015/05/23 职场文书
2015年幼儿园教育教学工作总结
2015/05/25 职场文书
解决Nginx 配置 proxy_pass 后 返回404问题
2021/03/31 Servers
python实现简单的名片管理系统
2021/04/26 Python