手机
当前位置:查字典教程网 >编程开发 >php教程 >php smarty truncate UTF8乱码问题解决办法
php smarty truncate UTF8乱码问题解决办法
摘要:估计不少玩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 smarty truncate UTF8乱码问题解决办法】相关文章:

php简单smarty入门程序实例

php中header跳转使用include包含解决参数丢失问题

php中smarty模板条件判断用法实例

配置最新的PHP加MYSQL服务器

PHP中路径问题的解决方案

PHP mysql事务问题实例分析教程

用libTemplate实现静态网页的生成

PHP的FTP学习(一)[转自奥索]

BBS(php & mysql)完整版(四)

护卫神php套件 php版本升级方法

精品推荐
分类导航