【转】Drupal字符串截取函数 truncate_utf8()
truncate_utf8($string, $len, $wordsafe = FALSE)
该函数以安全的方式截取UTF-8编码格式的字符串,一直令我很头疼的评论标题问题主要就是它运用不合理造成的。
参数解释:
$string 想被截段的字符串。
$len 函数执行后返回字符串的长度上限。
$wordsafe 标志符。TRUE表示在最近的空格处截断并返回;FALSE则不。drupal的API参考指名默认FALSE。
返回值就是截取下来的字符串。
之前参考的drupal论坛里的补丁均在用户没有留下评论标题(subject)的情况下,将评论内容字符串截取一段,然后作为“最新评论”栏里的标题。 但不知是何原因$wordsafe都被设置成TRUE,事实上这样很不合理,尤其是在中文情况下,一句话可能很长,在截取时容易出差错。 所以建议中文用户把第三个参数改成FALSE。至于第二个参数,就要看你想显示多长的标题了。
函数代码如下:
function truncate_utf8($string, $len, $wordsafe = FALSE) {
$slen = strlen($string);
if ($slen <= $len) {
return $string;
}
if ($wordsafe) {
while (($string[–$len] != ' ') && ($len > 0)) {};
}
if ((ord($string[$len]) < 0x80) || (ord($string[$len]) >= 0xC0)) {
return substr($string, 0, $len);
}
while (ord($string[–$len]) < 0xC0) {};
return substr($string, 0, $len);
}
将如上函数添加到主题下面的template.php文件中,就可以直接调用了。截取中文的效果不错。
转自:i3 server的空间http://hi.baidu.com/i3server/blog/item/e93ed525aca89d3ac89559cc.html