树枝中的 preg_match

Posted

技术标签:

【中文标题】树枝中的 preg_match【英文标题】:preg_match in twig 【发布时间】:2013-02-08 09:36:39 【问题描述】:

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

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

例子:

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

如何在 twig 中实现 (preg_match(list.a,b))>0 条件?

提前致谢

【问题讨论】:

***.com/questions/7096546/… 【参考方案1】:

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

    如果你的list是一个实体,添加一个方法matches() (list.matches(b)) ? something : else

    您可以创建一个自定义 Twig 扩展函数,该函数在内部使用 preg_match() http://symfony.com/doc/master/cookbook/templating/twig_extension.html

【讨论】:

【参考方案2】:

对于那些从 Google 搜索结果来到这里的人(比如我)。

containment operator 允许您执行以下操作:

'cd' in 'abcde' # returns true #

【讨论】:

【参考方案3】:

根据 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。

【讨论】:

以上是关于树枝中的 preg_match的主要内容,如果未能解决你的问题,请参考以下文章

树枝扩展中的 Symfony 依赖注入

如何匹配 preg_match 中的两位数?

从类型树枝模板中的 FormType 访问变量

使用 Symfony 2 本地化树枝中的日期

markdown WP中的转储字段(非木材/树枝)

如何使用变量处理树枝文件中的翻译?