【问题标题】:Smarty : substr a variableSmarty : substr 一个变量
【发布时间】:2011-05-18 12:55:51
【问题描述】:

如何打印 smarty 变量的前 n 个字符,例如{$var} 的前 30 个字符?

【问题讨论】:

    标签: smarty


    【解决方案1】:

    你应该使用截断修饰符:

    {$var|truncate:30}
    

    更多信息here

    【讨论】:

      【解决方案2】:

      使用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”的结果为零。

      【讨论】:

      • 这确实有效,但它实际上不是 Smarty 函数,它是一个 PHP 函数,您可以从 Smarty 内部访问。
      【解决方案3】:

      关于你的问题Jojo already gave the correct answer.

      你应该使用截断修饰符:

      {$var|truncate:30}

      但为了可用性和 seo-reaons,最好通过带有 text-overflow 属性的 css 缩短文本。 它允许您将整个文本打印到客户端,但将其缩短为特定的宽度/长度并显示...

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-28
        • 2011-05-04
        • 2011-05-29
        • 1970-01-01
        • 2011-03-25
        • 1970-01-01
        相关资源
        最近更新 更多