Symfony 在执行<;之前,如何使用Twig拆分模板中的HTML块;h2>;

Symfony 在执行<;之前,如何使用Twig拆分模板中的HTML块;h2>;,symfony,twig,Symfony,Twig,给定变量中的以下代码: 英格里登特斯酒店 500克克索费塔 ½黑胡椒粉 罗萨达辣椒园1号 3拉马斯·佩克尼亚斯·德罗梅罗酒店 橄榄石 拉普雷帕西翁酒店 护墙板和墙纸上的棉布。阿塞格罗斯·比恩·科恩·帕佩尔(Asegúrate de secarlos bien-con el-papel)。意大利红辣椒和罗梅罗葡萄园的咖啡馆。莱娜·弗拉斯科·康奈尔·奥里瓦·库布里尔·托多斯·英格里登特斯。这是一场12小时的战斗。内华达州的一家银行在气温环境下提供服务 您的代码不起作用,因为拆分时: <

给定变量中的以下代码:


英格里登特斯酒店
  • 500克克索费塔
  • ½黑胡椒粉
  • 罗萨达辣椒园1号
  • 3拉马斯·佩克尼亚斯·德罗梅罗酒店
  • 橄榄石
拉普雷帕西翁酒店 护墙板和墙纸上的棉布。阿塞格罗斯·比恩·科恩·帕佩尔(Asegúrate de secarlos bien-con el-papel)。意大利红辣椒和罗梅罗葡萄园的咖啡馆。莱娜·弗拉斯科·康奈尔·奥里瓦·库布里尔·托多斯·英格里登特斯。这是一场12小时的战斗。内华达州的一家银行在气温环境下提供服务


您的代码不起作用,因为拆分时:

<h2>Los ingredientes</h2>
<ul>
    <li>500 g de queso feta</li>
    <li>½ cucharadita de pimienta negra</li>
    <li>1 cucharadita de pimienta rosada</li>
    <li>3 ramas pequeñas de romero</li>
    <li>aceite de oliva </li>
</ul>

<h2>La preparación</h2>
<p>Corta el queso feta en dados y déjalos reposar sobre papel absorbente.</p>
length
过滤器为空字符串返回
0
,由于
0
的计算结果为
false
,因此跳过空数组项

最好也使用
trim
过滤器,以避免生成除空白以外没有其他内容的
div
s:

{% for block in contentBlock|split('<h2>') if block|trim|length %}
{contentBlock | split('')中的块的%if block | trim | length%}
当您还添加缺少的起始标签时,您将得到以下代码:

<section class="preparation">
    {% for block in contentBlock|split('<h2>') if block|trim|length %}
       <div class="block">
           <h2>{{ block }}
       </div>
    {% endfor %}
</section>

{contentBlock中的块的%|拆分('')如果块|修剪|长度%}
{{block}}
{%endfor%}

注意,我必须使用
raw
过滤器来输出未扫描的HTML代码。您可能不需要在代码中这样做。

Los Ingredites和preparacion是唯一的标题(在h2下)?我的意思是你没有渲染更多的h2?这一个非常受控制,最多有3个项目@martias解决方案完美地为某些情况设置了条件。请看几个示例:,这非常有效!非常感谢您提供的解决方案和透彻的解释,我对这个问题非常感兴趣@martias@ganar很乐意帮忙!您可以将此答案标记为解决方案。
{% for block in contentBlock|split('<h2>') if block|trim|length %}
<section class="preparation">
    {% for block in contentBlock|split('<h2>') if block|trim|length %}
       <div class="block">
           <h2>{{ block }}
       </div>
    {% endfor %}
</section>