【发布时间】:2011-05-18 12:55:51
【问题描述】:
如何打印 smarty 变量的前 n 个字符,例如{$var} 的前 30 个字符?
【问题讨论】:
标签: smarty
如何打印 smarty 变量的前 n 个字符,例如{$var} 的前 30 个字符?
【问题讨论】:
标签: smarty
【讨论】:
使用PHP函数:
{$var|substr:0:30}
或 mb_substr 用于 UTF-8 变量:
{$var|mb_substr:0:30}
引用文档的Variable Modifiers 部分:
所有 php 函数都可以隐式用作修饰符,如上例所示。但是,使用 php-functions 作为修饰符有两个小陷阱:
- 首先 - 有时函数参数的顺序不是理想的。用
{"%2.f"|sprintf:$foo}格式化$foo确实有效,但要求更直观,例如Smarty 发行版提供的{$foo|string_format:"%2.f"}。- 其次 - 如果启用了
$security,则所有用作修饰符的 php 函数都必须在$security_settings数组的MODIFIER_FUNCS元素中声明为受信任。[加粗]
这实际上很难通过搜索在文档中找到,(在撰写本文时)“php”或“substr”的结果为零。
【讨论】:
关于你的问题Jojo already gave the correct answer.
你应该使用截断修饰符:
{$var|truncate:30}
但为了可用性和 seo-reaons,最好通过带有 text-overflow 属性的 css 缩短文本。
它允许您将整个文本打印到客户端,但将其缩短为特定的宽度/长度并显示...。
【讨论】: