Удаление ссылок по регулярному выражению

Мне нужно удалить ссылки ввида |yadi.sk/d/nWUe0X9bHukZf|. они меняются. Общее только yadi.sk/d оставив ||


Ответы (1 шт):

Автор решения: S.H.

А я не понимаю, причем здесь регулярные выражения.

По моему, довольно простое SQL выражение DELETE FROM url_table WHERE url LIKE 'https://yadi.sk/d/%' ; вполне решает проблему.

Здесь мы используем оператор LIKE и выражение, в котором начало фиксировано https://yadi.sk/d/, а за этим фиксированным началом может идти что угодно, о чем нам говорит оператор %.

Это, если угодно, "регулярные выражения для бедных" в самом SQL. Нет, даже не так: для совсем бедных.

Тем не менее, задачу это вполне себе решает.

Дополнение

В комментарии автор вопроса прислал картинку с php my admin'ом.

На этой картинке видно, как я понимаю,

  1. что таблица называется dle_post
  2. что вопрос сформулирова неверно: автору надо не удалить строки, которые содержат ссылку на я-диск, а проапдейтить строки, так, чтобы ссылки в этой строке не стало.

То есть: было мусор - мусор - мусор |я-диcк| - мусор2 - мусор3 и т.п., а стало просто мусор - мусор - мусор || - мусор2 - мусор3 и т.п.

  1. что поле в таблице dle_post, котрое надо апдейтить, называется xfields

Если всё это - верно, то алгоритм такой:

  1. запросом SELECT * FROM dle_post WHERE xfields LIKE '%|https://yadi.sk/d/%|%' находим строки.

  2. анализируем поле xfields, чтобы понять, где в нём начинается ссылка. В SQL это делается выражением POSITION("|https://yadi.sk/d/" in xfields)

  3. теперь надо найти конец ссылки - ведь она, как я понял, не фиксированной длинны. Это делается той же POSITION, только искать надо правый ограничитель "|".

  4. вот теперь есть 2 позиции: начало и конец ссылки. Теперь её можно вырезать, воспользовавшись SUBSTR и склеиванием строк.

  5. и наконец, надо выполнить UPDATE.

Алгоритм я написал, теперь его надо превратить в одно, хоть и сложное, выражени ена SQL. Ну - тут вам и карты... то есть, google в руки.

Или - можно примерно так же написать это на PHP, если это для вас привычно. Алгоритм тото же, просто что то может быть попроще.

→ Ссылка