{strip}
<div
class="x"
>
{/strip}
变为
<divclass="x">
这不是任何人想要的。
所以,问题是:有什么方法可以解决这个问题吗?想象的方法:
This topic没有解决方案,(除了 - 添加自己的自定义标签)。另外,请不要提供原始PHP或任何其他语言/框架的解决方案。
答案 0 :(得分:4)
您可以使用@ dev的方法和capture您的数据并通过strip modifier运行它:
{capture name="spaces"}
<div
class="x"
> ... </div>
{/capture}
{$smarty.capture.spaces|strip:" "}
或通过regex_replace modifier运行捕获的内容(基本上与拆分相同,但开销更大):
{$smarty.capture.spaces|regex_replace:"#\s+#":" "}
或放入一个名为trim custom block plugin的名为trimwhitespace,它使用outputfilter trimwhitespace:
<?php
function smarty_block_trimwhitespace($params, $content, Smarty_Internal_Template $template, &$repeat)
{
require_once SMARTY_PLUGINS_DIR . 'outputfilter.trimwhitespace.php';
return smarty_outputfilter_trimwhitespace($content, $template->smarty);
}
将此文件命名为block.trimwhitespace.php并将其放在plugins_dir中。在模板中使用它:
{trimwhitespace}
<div
class="x"
> ... </div>
{/trimwhitespace}
虽然两种修饰符方法都适用于简单的HTML内容,但它们会针对包含<script>
或<pre>
标记的内容进行分解。如果你需要那些,你想要使用包装的outputfilter。
如果您希望所有输出都通过该过滤器运行,请忘记更改模板并将$smarty->loadFilter('output', 'trimwhitespace');
添加到您的设置中。
答案 1 :(得分:3)
保护个人空间:
{strip}
<div class="first{" "}
{"second "}
third">
{/strip}
变为
<div class="first second third">
使用smarty v3 对我来说很好。
答案 2 :(得分:1)
将代码分配给变量并尝试{$articleTitle|strip:' '}