Php &引用;以“开始”;在细枝模板中

Php &引用;以“开始”;在细枝模板中,php,regex,twig,comparison,Php,Regex,Twig,Comparison,我有一个细枝模板,我想测试一个项目是否以某个值开始 {% if item.ContentTypeId == '0x0120' %} <td><a href='?parentId={{ item.Id }}'>{{ item.BaseName }}</a><br /></td> {% else %} <td><a href='?{{ item.UrlPrefix }}'>{{ item.LinkFi

我有一个细枝模板,我想测试一个项目是否以某个值开始

{% if item.ContentTypeId == '0x0120' %}
    <td><a href='?parentId={{ item.Id }}'>{{ item.BaseName }}</a><br /></td>
{% else %}
    <td><a href='?{{ item.UrlPrefix }}'>{{ item.LinkFilename }}</a></td>
{% endif %}
{%if item.ContentTypeId==“0x0120%”

{%else%} {%endif%}
0x0120可以看起来像这样,也可以像0x0120D52000D430D2B0D8DD6F4BBB16123680E4F78700654036413B65C740B168E780DA0FB4BX这样更复杂。我想做的唯一一件事是确保它从0x0120开始

理想的解决方案是使用regex解决这个问题,但我不知道Twig是否支持这个


谢谢

您可以随时制作自己的过滤器来执行必要的比较

根据:

当由Twig调用时,PHP callable接收过滤器的左侧(在管道|之前)作为第一个参数,并接收传递给过滤器的额外参数(在括号()内)作为额外参数

这是一个修改过的例子

创建过滤器就像将名称与PHP关联一样简单 可调用:

然后,将过滤器添加到细枝环境:

下面是如何在模板中使用它:

我不是一个PHP爱好者,所以我不知道PHP是如何处理正则表达式的,但是如果
$longString
$startsWith
开头,上面的匿名函数将返回true。我相信您会发现实现起来很简单。

您可以使用过滤器。简单地做:

{% if item.ContentTypeId[:6] == '0x0120' %}
{% endif %}

是的,Twig支持比较中的正则表达式:

在您的情况下,它将是:

{% if item.ContentTypeId matches '/^0x0120.*/' %}
  ...
{% else %}
  ...
{% endif %}

您现在可以直接在Twig中执行此操作:

{% if 'World' starts with 'F' %}
{% endif %}
还支持“结束于”:

{% if 'Hello' ends with 'n' %}
{% endif %}

还有其他方便的关键字:

复杂字符串比较:

{% if phone matches '{^[\\d\\.]+$}' %} {% endif %}
(注意:双反斜杠由细枝转换为一个反斜杠)

字符串包含:

{{ 'cd' in 'abcde' }}
{{ 1 in [1, 2, 3] }}

请参阅此处的更多信息:

酷!有没有办法获取与正则表达式匹配的所有数组元素?在没有{%for array%}元素的情况下,现在可以使用
以开始,请参见下面的答案。
{% if 'Hello' ends with 'n' %}
{% endif %}
{% if phone matches '{^[\\d\\.]+$}' %} {% endif %}
{{ 'cd' in 'abcde' }}
{{ 1 in [1, 2, 3] }}