За последние 24 часа нас посетили 8727 программистов и 682 робота. Сейчас ищут 256 программистов ...

Почистить тексты от изображений

Тема в разделе "MySQL", создана пользователем romagromov, 17 янв 2019.

  1. romagromov

    romagromov Активный пользователь

    С нами с:
    17 дек 2015
    Сообщения:
    66
    Симпатии:
    0
    Здравствуйте!
    Знаю как пакетно удалить конкретные теги или вхождения.
    Но что если нужно почистить все статьи на сайте от изображений?
    Ведь внутри тега img всегда будет разное содержимое:

    HTML:
    1. <img src="images/image.png"  width="400" height="279" style="display: block; margin-left: auto; margin-right: auto;" />
    может быть так

    HTML:
    1. <img src="images/image2.jpg" />
     
  2. виталий032

    виталий032 Активный пользователь

    С нами с:
    31 янв 2014
    Сообщения:
    165
    Симпатии:
    26
    Адрес:
    Владивосток
    Попробуйте так: https://regex101.com/r/mqolQp/6
    PHP:
    1. $result = preg_replace('/<img(\s[^<>]*)?>/i', '', $текст_статьи);
     
  3. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    1.354
    Симпатии:
    288
    Адрес:
    Татарстан
  4. romagromov

    romagromov Активный пользователь

    С нами с:
    17 дек 2015
    Сообщения:
    66
    Симпатии:
    0
    Ну мне не все теги убрать, а только изображения.
    --- Добавлено ---
    Ага, вроде похоже. А как это вставить в sql запрос?
     
  5. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.537
    Симпатии:
    137
    Код (Text):
    1. /<img[^>]++>/i
     
  6. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    1.354
    Симпатии:
    288
    Адрес:
    Татарстан
    специально дал ссылку на доку... если внимательно прочесть - то можно задавать нужные теги

    ну так сразу бы и писал - что надо в БД это все изменить
     
  7. виталий032

    виталий032 Активный пользователь

    С нами с:
    31 янв 2014
    Сообщения:
    165
    Симпатии:
    26
    Адрес:
    Владивосток
    Странно, в начале доки написано:
    Код (Text):
    1. Второй необязательный параметр может быть использован для указания тегов, которые не нужно удалять.
    А ниже пример, где написано "для удаления и <br> и <br/> нужно сделать следующее", второй параметр наоборот, тег, который нужно удалить.

    А разве можно только sql запросом обойтись? Как это?
    Я думал надо:
    1. Сделать SELECT из базы
    2. Проитерировать все записи статей
    3. Применить preg_replace или strip_tags к строке (статьи)
    4. Сделать в базе UPDATE этой строки
    Готово.
     
  8. romagromov

    romagromov Активный пользователь

    С нами с:
    17 дек 2015
    Сообщения:
    66
    Симпатии:
    0
    Дык вроде раздел выбрал - Форум >Базы данных>MySQL
     
  9. MRSgiba

    MRSgiba Новичок

    С нами с:
    22 дек 2017
    Сообщения:
    198
    Симпатии:
    32
    Ну как минимум можно посмотреть в эту сторону
    Код (Text):
    1. UPDATE `table` SET `content`= REPLACE(`content`,'xxx','yyy');
    А дальше посмотреть https://github.com/mysqludf/lib_mysqludf_preg, https://github.com/hholzgra/mysql-udf-regexp/tree/master/regexp, ну или что-то еще по работе с регулярками в mysql.
    Или можно подумать и сделать тригер на update (но в него тоже надо регулярку прикручивать каким нибудь способом)
    и update-нуть в дополнительное созданное поле (потом скопировать обратно или php перенацелить на новый столбец в базе)
    Код (Text):
    1. UPDATE `table` AS U1, `table` AS U2
    2. SET U1.newcontent = U2.oldcontent
    3. WHERE U2.id = U1.id
     
    #9 MRSgiba, 18 янв 2019
    Последнее редактирование: 18 янв 2019
  10. romagromov

    romagromov Активный пользователь

    С нами с:
    17 дек 2015
    Сообщения:
    66
    Симпатии:
    0
    Нельзя? Регулярки в sql запросах не работают?
    Я просто не знаю...