您可以使用@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+#":" "}
或放入一个名为 trimwhitespace 的新 custom block plugin,它使用 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> 标记在内的内容。如果你需要这些,你想使用包装好的输出过滤器。
如果您希望所有输出都通过该过滤器运行,请忘记更改模板并将$smarty->loadFilter('output', 'trimwhitespace'); 添加到您的设置中。