php smarty truncate UTF8乱码问题解决办法
发布:smiling 来源: PHP粉丝网 添加日期:2021-02-19 11:50:07 浏览: 评论:0
这篇文章主要介绍了php smarty truncate UTF8乱码问题解决办法,需要的朋友可以参考下。
估计不少玩smarty模板的小朋友都遇到过裁切乱码问题。特别是UTF8编码的。
以下代码保存为modifier.truncate2.php 存到smarty libs下的plugin目录下
然后裁剪的时候用$v->content|truncate2:100
就搞定了。
如果不好用可能是缓存导致,请速度删除templates_c下的缓存文件(小编搞的时候遇到缓存问题。)代码如下:
- <?php
- /**
- * Smarty plugin
- * @package Smarty
- * @subpackage plugins
- */
- /**
- * Smarty truncate modifier plugin
- *
- * Type: modifier<br>
- * Name: truncate<br>
- * Purpose: Truncate a string to a certain length if necessary,
- * optionally splitting in the middle of a word, and
- * appending the $etc string or inserting $etc into the middle.
- * @link http://smarty.php.net/manual/en/language.modifier.truncate.php
- * truncate (Smarty online manual)
- * @author Monte Ohrt <monte at ohrt dot com>
- * @param string
- * @param integer
- * @param string
- * @param boolean
- * @param boolean
- * @return string
- */
- function smarty_modifier_truncate2( $string,$length = 80,$etc='...',$count_words = true ) {
- return $returnstr =substr_utf8($string, 0, $length).$etc;
- }
- function substr_utf8($str, $start=0, $length=-1, $return_ary=false) {
- $len = strlen($str);if ($length == -1) $length = $len;
- $r = array();
- $n = 0;
- $m = 0;
- for($i = 0; $i < $len; $i++) {
- $x = substr($str, $i, 1);
- $a = base_convert(ord($x), 10, 2);
- $a = substr('00000000'.$a, -8);
- if ($n < $start) {
- if (substr($a, 0, 1) == 0) {
- }elseif (substr($a, 0, 3) == 110) {
- $i += 1;
- }elseif (substr($a, 0, 4) == 1110) {
- $i += 2;
- }
- $n++;
- }else {
- if (substr($a, 0, 1) == 0) {
- $r[] = substr($str, $i, 1);
- }elseif (substr($a, 0, 3) == 110) {
- $r[] = substr($str, $i, 2);
- $i += 1;
- }elseif (substr($a, 0, 4) == 1110) {
- $r[] = substr($str, $i, 3);
- $i += 2;
- }else {
- $r[] = '';
- }
- if (++$m >= $length) {
- break;
- }
- }
- }
- return $return_ary ? $r : implode("",$r);
- }
- /* vim: set expandtab: */
- ?>
samrty的插件体系还是比较智能而且容易修改的。
Tags: smarty truncate UTF8乱码
相关文章
- ·把FCKeditor导入PHP+SMARTY的方法(2014-09-05)
- ·sae使用smarty模板的方法(2020-07-15)
- ·将FCKeditor导入PHP+SMARTY的实现方法(2021-05-08)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)