php smarty truncate UTF8乱码问题解决办法_php教程-查字典教程网
php smarty truncate UTF8乱码问题解决办法
php smarty truncate UTF8乱码问题解决办法
发布时间:2016-12-29 来源:查字典编辑
摘要:估计不少玩smarty模板的小朋友都遇到过裁切乱码问题。特别是UTF8编码的。以下代码保存为modifier.truncate2.php存到...

估计不少玩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的插件体系还是比较智能而且容易修改的。

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新php教程学习
    热门php教程学习
    编程开发子分类