【问题标题】:SMARTY : Remove whitespace at the beginning or end of my string in Smarty template?SMARTY:删除 Smarty 模板中字符串开头或结尾的空格?
【发布时间】:2026-01-11 21:55:02
【问题描述】:

这是用逗号 (,) 分隔的字符串 $myStr = "One, Two,Three, Four , Five ,Six "

我可以成功爆破{assign var="options" value=","|explode:$myStr}

但我也想在输出每个字符串时从每个字符串的开头或结尾删除空格。换句话说:我正在寻找一个与 PHP 的内置 trim($mystr) 函数等效的 SMARTY 函数。如果存在,PHP trim 将删除开始和结束的空格,否则返回实际的字符串。

{section name=myname loop=$options}
   {$options[myname]}
{/section}

上面的代码会输出:

One
Two
Three
[whitespace]Four[whitespace]
[whitespace]Five[whitespace]
Six[whitespace]

如何修剪空格?

【问题讨论】:

  • 重复请检查:*.com/questions/1279774/…
  • 没有。它不重复。两者都是不同的问题。我担心的是仅删除 startend 位置的空格。您提到的问题是关于从字符串中删除所有空格。
  • 我正在寻找 PHP trim($mystr) 函数的 SMARTY equilent。如果存在,PHP trim 将删除开始和结束空格,否则返回实际字符​​串。

标签: php smarty whitespace trim


【解决方案1】:

smarty 中有{strip}{/strip}。 这些标签之间的空格将被删除。

{$var|substr:0:-1} 将在您的情况下删除最后一个字符空格。 {$var|substr:1} 将删除字符串中的第一个字符。

所有 php-functions 都可以隐式地用作修饰符(更多见下文)和 修饰符可以组合

来自 smarty 中的 docs {$var|trim} 等于 php 中的 trim($var)

还有另一种方法。在 smarty 中使用 {php}{/php} 标签可以使用 php 内置的 trim() 函数,但这对我来说毫无意义。如果 php 包含 smarty 变量,为什么还要把它放回 php?废话。

【讨论】:

  • 感谢您的回答。但它会删除字符串中的所有空格。我想从字符串的两端删除空格。
  • 再次感谢您,但如果末尾没有出现空格,它将删除字符串中的第一个和最后一个字符。我正在寻找 trim($mystr) 的 php quilent。 PHP trim 将删除开始和结束空格(如果存在),否则返回实际字符​​串。
  • 为我工作。刚刚测试。 $smarty->assign('text', ' empty '); 然后在 smarty {$text|trim} 中删除了空格。
【解决方案2】:

如果空格只是空格字符中的空格,您可以使用函数trim() (Docs) 将其剥离。将$options[myname] 替换为trim($options[myname])

如果是字符串“[whitespace]”,你可以使用preg_replace() (Docs) 比如:preg_replace("/[whitespace]/","",$options[myname])

【讨论】:

  • 我知道在 php 中可以做到这一点。但我的问题是关于 SMARTY 的。