在做帝国cms模板开发的时候经常会遇到要把长标题和或者截取部分正文作为简介的问题,通过esub函数可以解决指定的长度,如:
<?=esub($bqr['title'],45)?>
<?=esub($bqr[smalltext],100)?>
如果需要加省略号,可以这样:
<?=esub($bqr[title],36,'...')?>
但这样又出现了一个新问题,无论字数多少都会加省略号,短的标题也会加上省略号。所以还要做一点处理。
<?php
if(strlen($bqr[title]) > 70)
$cutitle = esub($bqr[title],45,'...');
else
$cutitle = $bqr[title];
?>
先判断下标题的长度,如果超过一定的长度就截取并加省略号,否则就直接输出。这里的strlen($bqr[title]) 为utf-8的字符长度,一个英文字母占一个字符,一个汉字占3个字符。
完整代码如下:
[e:loop={'news',6,18,0,'','newstime DESC'}]
<?php
if(strlen($bqr[title]) > 70)
$cutitle = esub($bqr[title],45,'...');
else
$cutitle = $bqr[title];
?>
<li><a href="<?=$bqsr[titleurl]?>" title="<?=$bqr[title]?>">
<div class="time"><?=date('d',$bqr[newstime])?><span>/<?=date('m',$bqr[newstime])?>月</span></div>
<div class="title"><?=$cutitle?></div>
</a>
</li>
[/e:loop]