Smarty模板truncate截取字符串函数详解与用法
在Smarty模板开发中,处理长文本显示时常需截断字符串。truncate函数提供了灵活的截断方案,包括默认截断、自定义长度、添加省略号以及精确字符计数等功能。
truncate函数核心功能
smarty的truncate修饰符用于从字符串开始处截取指定长度的字符。其基本逻辑如下:
- 默认行为:默认截取长度为80个字符。
- 智能截断:默认情况下,smarty会尝试在一个单词的末尾截断,以保持语义完整。
- 精确截断:若需严格按字符数截断(可能截断在单词中间),需设置第三个参数为true。
详细操作步骤与代码示例
第1步:准备测试数据
在PHP文件中定义变量并赋值给模板,以便观察不同截断效果。
复制代码 代码如下:
<?php
// index.php
$smarty = new Smarty;
$smarty->assign('articleTitle', 'Two Sisters Reunite after Eighteen Years at Checkout Counter.');
$smarty->display('index.tpl');
?>
第2步:配置模板文件
在index.tpl中使用不同的参数调用truncate函数。
注意:下方代码块展示了完整的输出结果对比。
//index.tpl
{$articleTitle} // 原始输出
{$articleTitle|truncate} // 默认长度(80)截断
{$articleTitle|truncate:30} // 截断前30字符(单词末)
{$articleTitle|truncate:30:""} // 截断前30字符(无后缀)
{$articleTitle|truncate:30:"---"} // 截断前30字符(后缀“---”)
{$articleTitle|truncate:30:"":true} // 精确截断30字符(无后缀)
{$articleTitle|truncate:30:"...":true}
输出结果解析
根据上述模板代码,浏览器将显示以下对应内容:
- {$articleTitle}: Two Sisters Reunite after Eighteen Years at Checkout Counter.
- {$articleTitle|truncate}: Two Sisters Reunite after Eighteen Years at Checkout Counter. (原句未超过80字,故全显示)
- {$articleTitle|truncate:30}: Two Sisters Reunite after… (截断至第30字符后的单词边界,默认加“…”)
- {$articleTitle|truncate:30:""}: Two Sisters Reunite after (截断后无任何标记)
- {$articleTitle|truncate:30:"---"}: Two Sisters Reunite after— (使用自定义分隔符“---”,但此处因刚好在单词边距,显示为一部分)
- {$articleTitle|truncate:30:"":true}: Two Sisters Reunite after Eigh (精确到第30个字符,直接切断单词)
- {$articleTitle|truncate:30:"...":true}: Two Sisters Reunite after E… (精确到第30个字符,并在切断处附加“...”)
关键参数说明
- 第一个参数:指定截取的最大字符数。默认为80。
- 第二个参数:指定截断后追加的字符串(如省略号)。默认为“...”。
- 第三个参数:布尔值。设为
true表示精确按字符数截断(即使切断单词);设为false或省略则表示在最近的单词边界截断。
以上就是Smarty truncate截取字符串函数的详细内容,更多关于Smarty模板技巧的资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









