新建一个名为“modifier.truncate_utf8.php”的PHP文件,复制到"smarty/plugins"这个目录下面.
Code:
<?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_truncate_utf8($string, $length = 80, $etc = '...',
$break_words = false, $middle = false)
{
$patten = '/<img.*?>/i ';
$string= preg_replace($patten , ' ' ,$string);
if ($length == 0)
return '';
if (strlen($string) > $length) {
$i = 0;
$newword = '';
while($i<$length){
if(ord($string[$i]) > 224){
$newword .= $string[$i].$string[$i+1].$string[$i+2];
$i = $i +3;
}else if(ord($string[$i] > 192)){
$newword .= $string[$i].$string[$i+1];
$i = $i +2;
}
else{
$newword .= $string[$i];
$i++;
}
}
return $newword . $etc;
} else {
return $string;
}
}
/* vim: set expandtab: */
?>
这个方法只是在一个开源商城的iestore程序中用到了,如果不好用,可能有漏下的地方,请在研究一下iestore这个商城的tools/smarty/plugins/modifier.truncate.php这个文件