Оператор {ifhas}

Тема в разделе "Функции поиск-замены и регулярные выражения", создана пользователем Cheshir, 16 авг 2019.

Метки:
?

Подробный мануал по функции {ifhas}

Голосование закрыто 16 сен 2019.
  1. Да, инструкция нужна в Базе знаний

    1 голосов
    50,0%
  2. Нет, и так все понятно

    1 голосов
    50,0%
  1. Cheshir

    Cheshir Member Пользователи

    Регистрация:
    23 июн 2017
    Сообщения:
    29
    Город:
    Москва
    Здравствуйте!

    Нужна помощь с удалением ненужных html таблиц в тексте описания, если в этой таблице присутствует изображение.

    Использую оператор {ifhas}, но удаляются все таблицы, а не содержащие тег <img

    Применяю конструкцию:
    Код:
    {ifhas}<img{then}<table{skip}table>|
    К контенту:
    Скрытое содержимое:
    **Скрытое содержимое: доступно при наличии 1 постов.**
    Ожидаемый результат:
    Остаются только те таблицы, в теле которых не присутствует тег img
     
  2. kenny872012

    kenny872012 Well-Known Member Пользователи

    Регистрация:
    18 фев 2018
    Сообщения:
    313
    Можно так:
    {br2}|
    <table{skip}>{get}</table>|<table>{multiget}</table>
    [FILTERSTRINGS]<img|delete

    [​IMG]
     
  3. Cheshir

    Cheshir Member Пользователи

    Регистрация:
    23 июн 2017
    Сообщения:
    29
    Город:
    Москва
    К сожалению, ваш пример удаляет остальной текст, вне таблиц, но все равно благодарю за попытку.
     
  4. kenny872012

    kenny872012 Well-Known Member Пользователи

    Регистрация:
    18 фев 2018
    Сообщения:
    313
    Вы имеете в виду этот текст, атрибут class="1" и class="2"?

    Тогда можно так:
    {br2}|
    <table{skip}>{get}</table>|<table{skip}>{multiget}</table>
    [FILTERSTRINGS]<img|delete

    В этом случае будут оставаться названия атрибутов

    [​IMG]
     
    Последнее редактирование: 16 авг 2019
  5. Cheshir

    Cheshir Member Пользователи

    Регистрация:
    23 июн 2017
    Сообщения:
    29
    Город:
    Москва
    Я имею ввиду, что описание (ячейка, в котором находится описание товара) может содержать иной текст, кроме таблиц, обычное текстовое описание среди которого могут встречаться как таблицы с изображениями, так и без онных.
    По логике вещей оператор {ifhas} должен был бы решать эту проблему.
    Так же было бы полезно иметь оператор останавливающий выполнение определенного правила, если в контенте есть определенное вхождение, тогда можно было бы просто и легко использовать skip для этих целей.
     
  6. Cheshir

    Cheshir Member Пользователи

    Регистрация:
    23 июн 2017
    Сообщения:
    29
    Город:
    Москва
    И требуется удалять таблицу, в которой есть img полность
     
  7. kenny872012

    kenny872012 Well-Known Member Пользователи

    Регистрация:
    18 фев 2018
    Сообщения:
    313
    Ну так, телепатов тут не водится, описывайте полностью задачу в следующий раз. Сделал на том примере, что вы прислали. {ifhas} не решит эту проблему так как ваши таблицы идут единым текстом и он находит в этом тексте вхождение "<img" и соответственно удаляет все таблицы как и прописано в вашем условии.
     
  8. Cheshir

    Cheshir Member Пользователи

    Регистрация:
    23 июн 2017
    Сообщения:
    29
    Город:
    Москва
    Не надо быть телепатом, надо внимательней читать
     
  9. Djahat

    Djahat Well-Known Member Пользователи

    Регистрация:
    14 янв 2013
    Сообщения:
    543
    Город:
    Мордор
    Всем привет.
    Заранее извиняюсь, если где то описано, а я не нашел, я пытался найти в системе поиска.

    Не пойму почему такой результат в поиске замене ifhas
    {ifhas}{anytext}{then}{else}

    Какой синтаксис правильный не подскажите ?

    Я жду что результатом, поиска замены , будет ДАААА



    ifhas.jpg
     
  10. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Здравствуйте.

    Код:
    {ifhas}ПОДСТРОКА{then}ПРАВИЛО 1{else}ПРАВИЛО 2
    
    {ifhas}ПОДСТРОКА{then}ЧТО ЗАМЕНИТЬ|НА ЧТО ЗАМЕНИТЬ{else}ЧТО ЗАМЕНИТЬ|НА ЧТО ЗАМЕНИТЬ
    
    {ifhas}Substring{then}{get}|Yes{else}{get}|No
     
    Serheo и Djahat нравится это.
  11. Serheo

    Serheo Well-Known Member Пользователи

    Регистрация:
    13 окт 2018
    Сообщения:
    251
    Город:
    Москва
    Сделал конструкцию:
    Код:
    {ifhas}{anytext}{then}{get}|YES{else}{niltext}|NO
    В редакторе поиска/замен работает, но в результатах выводит только YES. Это баг или фича?

    UPD Есть подозрения, что это из-за того, что там не просто текст пустой, но и начало и конец границы тоже пустые. Как в этом случае заставить эту конструкцию работать? Решения не нашёл.
     
    Последнее редактирование: 12 сен 2022
  12. Serheo

    Serheo Well-Known Member Пользователи

    Регистрация:
    13 окт 2018
    Сообщения:
    251
    Город:
    Москва
    В другом проекте прописал:
    Код:
    {ifhas}{anytext}{then}[SETTEXT]Да{else}[SETTEXT]Нет
    Граница, в данном случае, всегда есть. В редакторе всё работает, а в проекте нет. Как это победить?
     

Поделиться этой страницей