preg_match在树枝上

时间:2013-02-22 17:18:43

标签: php twig

首先,我知道逻辑应该在控制器中,而不是在视图中,我保持这种方式。

但在这种特殊情况下,我需要在三元运算中使用preg_match来设置div的css类。

示例:

{% for list in lists %}
    <div class="{{ (preg_match(list.a, b))>0 ? something : else }}"...>...</div>
{% endfor %}

如何在树枝中实现(preg_match(list.a,b))&gt; 0 条件?

提前致谢

3 个答案:

答案 0 :(得分:5)

你不能直接使用preg_match,但有办法实现它

1)如果list是实体,则添加匹配{{ (list.matches(b)) ? something : else }}

的方法

2)您可以创建一个在内部使用preg_match的自定义树枝扩展功能http://symfony.com/doc/master/cookbook/templating/twig_extension.html

答案 1 :(得分:2)

对于那些从谷歌搜索结果(像我一样)来到这里的人。

containment operator允许你做这样的事情:

{{ 'cd' in 'abcde' }} {# returns true #}

答案 2 :(得分:0)

从 Serge 的评论中展开,是正确答案。

在我的示例中,我的字符串是“Message Taken - 12456756”。然后我可以使用 |split 将其转换为数组并使用 |replace 来消除空白。

{% set mt = 'Message Taken' in d.note %}
{% if mt == true %}
   {#.. you can then do something that is true#}
   {% set mt_array = d.note|split('-') %}
   {{ mt_array[0] }} | {{ mt_array[1]|replace({' ' : ''}) }}
{% endif %}

这将输出我的字符串,但我现在控制两部分而不是 1。