Здравствуйте! Знаю как пакетно удалить конкретные теги или вхождения. Но что если нужно почистить все статьи на сайте от изображений? Ведь внутри тега img всегда будет разное содержимое: HTML: <img src="images/image.png" width="400" height="279" style="display: block; margin-left: auto; margin-right: auto;" /> может быть так HTML: <img src="images/image2.jpg" />
Попробуйте так: https://regex101.com/r/mqolQp/6 PHP: $result = preg_replace('/<img(\s[^<>]*)?>/i', '', $текст_статьи);
Ну мне не все теги убрать, а только изображения. --- Добавлено --- Ага, вроде похоже. А как это вставить в sql запрос?
специально дал ссылку на доку... если внимательно прочесть - то можно задавать нужные теги ну так сразу бы и писал - что надо в БД это все изменить
Странно, в начале доки написано: Код (Text): Второй необязательный параметр может быть использован для указания тегов, которые не нужно удалять. А ниже пример, где написано "для удаления и <br> и <br/> нужно сделать следующее", второй параметр наоборот, тег, который нужно удалить. А разве можно только sql запросом обойтись? Как это? Я думал надо: 1. Сделать SELECT из базы 2. Проитерировать все записи статей 3. Применить preg_replace или strip_tags к строке (статьи) 4. Сделать в базе UPDATE этой строки Готово.
Ну как минимум можно посмотреть в эту сторону Код (Text): 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): UPDATE `table` AS U1, `table` AS U2 SET U1.newcontent = U2.oldcontent WHERE U2.id = U1.id