Twig strip textarea и создать массив - PullRequest
0 голосов
/ 07 мая 2019

Я пытаюсь удалить некоторый текст из значения, а затем создать массив из него с удаленными значениями. У меня проблемы с лишением значения текста.

Я могу сделать это только на внешнем интерфейсе, поскольку у меня нет доступа к бэкэнду (платформа 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 %}

Что эквивалентно match в Twig? Я также попытался replace, но я просто не могу удалить этот текст.

Любая помощь с благодарностью!

1 Ответ

0 голосов
/ 08 мая 2019

Вы можете использовать некоторые простые строковые функции.

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

демо


  • split взрыв из twig.Это разделит вашу строку в чеканном на основе символа ].Второй параметр (2) гарантирует, что в массиве будет только максимум 2 части.

  • заменить просто str_replace


Если вы хотите решить это с помощью регулярных выражений, вы бы либонеобходимо написать функцию / фильтр с preg_match или установить расширение, например this

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...