Smarty : substr a variable

前端 未结 3 1218
南笙
南笙 2021-01-04 00:36

How can I print the first n characters of a smarty variable, e.g. the first 30 characters of {$var}?

相关标签:
3条回答
  • 2021-01-04 00:49

    Use the PHP function:

    {$var|substr:0:30}
    

    or mb_substr for UTF-8 variables:

    {$var|mb_substr:0:30}
    

    Quoting from the Variable Modifiers section of the documentation:

    All php-functions can be used as modifiers implicitly, as demonstrated in the example above. However, using php-functions as modifiers has two little pitfalls:

    • First - sometimes the order of the function-parameters is not the desirable one. Formatting $foo with {"%2.f"|sprintf:$foo} actually works, but asks for the more intuitive, like {$foo|string_format:"%2.f"} that is provided by the Smarty distribution.
    • Secondly - if $security is enabled, all php-functions that are to be used as modifiers have to be declared trusted in the MODIFIER_FUNCS element of the $security_settings array.

    [bold added]

    This is actually difficult to find in the documentation by searching, which (as of this writing) turns up zero results for "php" or "substr".

    0 讨论(0)
  • 2021-01-04 00:55

    Regarding to your problem Jojo already gave the correct answer.

    You should use truncate modifier:

    {$var|truncate:30}

    But for usability and seo-reaons it would be better to shorten the text via css with text-overflow property. It allows you to print the whole text out to the client but shorten it to a specific width/length and show ... instead.

    0 讨论(0)
  • 2021-01-04 00:57

    You should use truncate modifier:

    {$var|truncate:30}
    

    More information here.

    0 讨论(0)
提交回复
热议问题