枝条textarea并创建数组

时间:2019-05-07 18:38:33

标签: twig

我正在尝试从值中剥离一些文本,然后使用剥离的值从中创建一个数组。 我在剥离文本值时遇到麻烦。

我只能在前端执行此操作,因为我无法访问后端(SaaS平台)

在下面的示例中,value.value(最初是文本区域)返回以下文本:

[185047078]1x something - Type 1
[415533322]1x something - something
[152890667]1x something 500x500 mm 

我想去除文本,所以我剩下[185047078][415533322][152890667]或没有括号。

通常在JS中,您将执行以下操作:

hide_ids = txt.match(/[^\]\[]+(?=\])/g) 

但是它需要在Twig中完成。

然后,我想将值推入数组hide_ids中。

 {% set hide_ids = [] %}
 {% if product.custom %}
   {% for custom in product.custom %}
     {% if 'Some title' in custom.title %}
       {% for value in custom.values %}

         {% set hide_this_id = value.value %}
         {% if hide_this_id matches '{/[^\]\[]+(?=\])/g}' %}
             {% set hide_ids = hide_ids | merge([hide_this_id]) %}
          {% endif %}


        {% endfor %}
      {% endif %}
    {% endfor %}
  {% endif %}

  {% set hidden = false %}

  {% if id in hide_ids %}
    {% set hidden = true %}     
  {% endif %}

Twig中的match等于什么?我也尝试过replace,但是我无法删除该文本。

任何帮助都将不胜感激!

1 个答案:

答案 0 :(得分:0)

您可以使用一些简单的字符串函数。

{% for id in ids %}
    {{ id | split(']', 2)[0] | replace({'[': '',}) }}
{% endfor %}

demo


  • splittwig的{​​{3}}。这将根据]字符分隔您的字符串。第二个参数(2)确保数组中最多只有2个部分。

  • explode只是str_replace


如果您想使用正则表达式解决此问题,则需要使用preg_match编写函数/过滤器,或安装replace之类的扩展名