Twig 剥离标签,但在块级元素之间保留(或添加)空格

问题描述 投票:0回答:1

考虑以下 HTML 字符串:

{% set html = '<h2>Neo praemitto velit.</h2><p>Caecus metuo proprius.</p><p>At nobis plaga tego.</p>' %}

我在那根弦上运行

striptags()

{{ html|striptags() }}

电流输出:

Neo praemitto velit.Caecus metuo proprius.At nobis plaga tego.

预期输出:

Neo praemitto velit. Caecus metuo proprius. At nobis plaga tego.

问题:

是否有一种简单的方法可以在多个关闭和打开

<p>
以及其他暗示换行的块级标签(如
<h2>
等)之间保留(或添加)空格?

我可能可以使用正则表达式进行搜索/替换,以查找

.
后跟任何非空白字符,然后自己添加空格,但这听起来有点矫枉过正。你会怎么做?

如果重要的话,我正在使用 Twig 3.8.0。

twig twig-filter
1个回答
0
投票

Twig 没有内置的过滤器可以实现你想要的效果,但是你可以使用一些字符串函数来获得想要的效果

{{ html|replace({
    '</h1>': ' ',
    '</h2>': ' ',
    '</h3>': ' ',
    '</h4>': ' ',
    '</h5>': ' ',
    '</h6>': ' ',
    '</p>': ' ',    
}) | striptags }}

演示


如果您在多个地方需要此功能,请考虑向树枝添加(自定义)过滤器,例如

$filter = new \Twig\TwigFilter('replace_html', function ($string) {
    return strip_tags(str_replace(['</h1>', '</h2>', '</h3>', '</h4>', '</h5>', '</h6>', '</p>',], ' ', $string));
});


$twig = new \Twig\Environment($loader);
$twig->addFilter($filter);

{{ html | replace_html }}
© www.soinside.com 2019 - 2024. All rights reserved.