ThinkPHP中截断指定长度的中文字符串后用省略号代替
在TP模板中获取字符串并截断,以前一直觉得很神奇,现在才知道是自己不懂。
开始不是很了解模板中可以直接调用方法,以为$this->assign("content",$res);指派后只能在模板中这样接受{$content},于是写各种原生PHP语句无效
<php>$title = {$content["title"]}</php>
后来高手指点才知道在标签<php></php>中不需要{}也就是
//显示效果
参考文章:点击打开链接
<php>$title = $content["title"]</php>
于是终于拨开乌云见日开了
//放在Common文件夹下common.php中的获取中文字符串的方法
function abslength($str){
$len=strlen($str);
$i=0; $j=0;
while($i<$len)
{
if(preg_match("/^[".chr(0xa1)."-".chr(0xf9)."]+$/",$str[$i]))
{
$i+=3; //注意TP中的编码都是utf-8,所以+3;如果是GBK改为+2
}
else
{
$i+=1;
}
$j++;
}
return $j;
}
//模板中的部分代码
<table>
<tbody>
<volist name="article" id="content">
<tr class="">
<!--鼠标移动上去显示截断前的字符串,太简单了哦-->
<td title="{$content["title"]}" style="cursor:pointer;"><li><a href="{:U("Home/Info/detail?id=".$content["id"])}"><strong>
<php>
echo substr("abc",0,2)."..."; <!--测试语句,如果全是非中文,这条语句就能搞定-->
$title = $content["title"];
$length = abslength($title);
if ($length>6) {
</php>
{$content["title"] | String::msubstr=0,5,"utf-8",true} //参考的是底部的连接
<php>
} else {
echo $content["title"];
}
</php>
</strong></a></li></td>
<td class="center">{$content["time"]}</td>
</tr>
</volist>
</tbody>
</table>
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。