{strip}
<div
class="x"
>
{/strip}
变成
<divclass="x">
那不是任何人想要的。
所以,问题是:有什么办法可以避免这种情况?想象的方法:
他们论坛上的This topic没有解决方案,(除了-添加您自己的自定义标签)。另外,请不要提供原始PHP或任何其他语言/框架的解决方案。
最佳答案
您可以使用@dev的方法,然后使用capture数据并通过strip modifier运行它:
{capture name="spaces"}
<div
class="x"
> ... </div>
{/capture}
{$smarty.capture.spaces|strip:" "}
或通过regex_replace modifier运行捕获的内容(本质上与split相同,但开销更多):
{$smarty.capture.spaces|regex_replace:"#\s+#":" "}
或放入一个新的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>
标记的内容来说却很糟糕。如果需要这些,则需要使用包装好的输出过滤器。如果您希望所有输出都通过该过滤器运行,则无需更改模板,而是将
$smarty->loadFilter('output', 'trimwhitespace');
添加到设置中。关于php - {strip}:如何避免意外删除空格?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7964317/