考虑以下 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 没有内置的过滤器可以实现你想要的效果,但是你可以使用一些字符串函数来获得想要的效果
{{ 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 }}