gpt4 book ai didi

php - { strip } : how to avoid unintended whitespace removal?

转载 作者:行者123 更新时间:2023-12-02 07:08:59 25 4
gpt4 key购买 nike

{strip}
<div
class="x"
>
{/strip}

成为

<divclass="x">

这不是任何人想要的。

所以,问题是:有什么办法可以避免这种情况吗?设想的方法:

  • 使用参数或其他智能函数用空格替换新行
  • 添加未剥离/修剪的 protected 空间

This topic在他们的论坛上没有解决方案,(除了 - 添加您自己的自定义标签)。此外,请不要提供原始 PHP 或任何其他语言/框架的解决方案。

最佳答案

您可以使用@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+#":" "}

或放入新的 custom block plugin使用 outputfilter trimwhitespace 的称为 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 } : how to avoid unintended whitespace removal?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7964317/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com