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 相关文章推荐
PHP4实际应用经验篇(8)
Oct 09 PHP
php批量删除数据
Jan 18 PHP
关于PHP的相似度计算函数:levenshtein的使用介绍
Apr 15 PHP
PHP+ajaxfileupload+jcrop插件完美实现头像上传剪裁
Jun 09 PHP
PHP读取配置文件类实例(可读取ini,yaml,xml等)
Jul 28 PHP
PHP数组游标实现对数组的各种操作详解
Jan 26 PHP
PHP之图片上传类实例代码(加了缩略图)
Jun 30 PHP
PHP入门教程之日期与时间操作技巧总结(格式化,验证,获取,转换,计算等)
Sep 11 PHP
LaravelS通过Swoole加速Laravel/Lumen详解
Mar 02 PHP
PHP Post获取不到非表单数据的问题解决办法
Feb 27 PHP
PHP代码覆盖率统计详解
Jul 22 PHP
PHP 图片处理
Sep 16 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
动态网站web开发 PHP、ASP还是ASP.NET
2006/10/09 PHP
php在字符串中查找另一个字符串
2008/11/19 PHP
php实现的zip文件内容比较类
2014/09/24 PHP
php修改文件上传限制方法汇总
2015/04/07 PHP
php读取出一个文件夹及其子文件夹下所有文件的方法示例
2017/06/15 PHP
php+lottery.js实现九宫格抽奖功能
2019/07/21 PHP
tp5递归 无限级分类详解
2019/10/18 PHP
Laravel ORM 数据model操作教程
2019/10/21 PHP
jQuery 仿百度输入标签插件附效果图
2014/07/04 Javascript
基于AngularJS实现页面滚动到底自动加载数据的功能
2015/10/16 Javascript
原生js模拟淘宝购物车项目实战
2015/11/18 Javascript
angular.js之路由的选择方法
2016/09/24 Javascript
js中DOM三级列表(代码分享)
2017/03/20 Javascript
jquery实现静态搜索功能(可输入搜索文字)
2017/03/28 jQuery
ES6中箭头函数的定义与调用方式详解
2017/06/02 Javascript
JavaScript中import用法总结
2019/01/20 Javascript
微信小程序API—获取定位的详解
2019/04/30 Javascript
详解Vuex下Store的模块化拆分实践
2019/07/31 Javascript
JS常用排序方法实例代码解析
2020/03/03 Javascript
Javascript表单序列化原理及实现代码详解
2020/10/30 Javascript
CentOS 8.2服务器上安装最新版Node.js的方法
2020/12/16 Javascript
Python基于Pymssql模块实现连接SQL Server数据库的方法详解
2017/07/20 Python
浅析python协程相关概念
2018/01/20 Python
python实现月食效果实例代码
2019/06/18 Python
python:动态路由的Flask程序代码
2019/11/22 Python
vue.js刷新当前页面的实例讲解
2020/12/29 Python
CSS3混合模式mix-blend-mode/background-blend-mode简介
2018/03/15 HTML / CSS
html5 video标签屏蔽右键视频另存为的js代码
2013/11/12 HTML / CSS
Get The Label中文官网:英国运动时尚购物平台
2017/04/19 全球购物
意大利中国电子产品购物网站:Geekmall.com
2019/09/30 全球购物
工程力学专业自荐信范文
2014/03/17 职场文书
幼儿教师暑期培训方案
2014/08/27 职场文书
2015年试用期自我评价范文
2015/03/10 职场文书
深入理解go slice结构
2021/09/15 Golang
MySQL日期时间函数知识汇总
2022/03/17 MySQL
Win10系统搭建ftp文件服务器详细教程
2022/08/05 Servers