Как убрать изображение из текста
Есть проблема. В тексте имеются изображения сл. видов:
2) <img src="https://blogger.googleusercontent.com/tracker/2968402634370166513-316202019991823242?l=www.novosti.travel" alt="" width="1" height="1">
Необходимо убрать все img второго вида с помощью PHP. Я пробовал сл. образом:
preg_replace('/\<img.*?src="https:\/\/.*?\/>/i'," ",$text)
Первый вариант убирает только (1)-ые изображения, а второй не убирает ничего. Подскажите как так получается и как исправить?
Результат:
Здесь подразумевается, что картинка заканчивается на />
То-есть вместо
можно написать
В моем варианте обнаружена ошибка. По какой-то причине он иногда удаляет весь текст.
В "rss_data" приходит:[HTML]<img src="http://tonkosti.ru/images/1/17/Centro_Barsha.jpg" border="0">Департамент туризма и коммерческого маркетинга правительства Дубая объявил о новой системе классификации дубайских отелей. Созданная на основе специальных исследований и ориентированная на растущую туриндустрию эмирата, классификация вступит в действие в течение года, заменив собой прежнюю систему. В то время как до сих пор отелям присваивались категории от 1 до 5 звезд, в новой системе классификации к этим традиционным категориям добавится категория «бюджетный» для обозначения недорогих отелей, остававшихся до этого времени «беззвездными».<br><br>Новая система классификации отелей также будет более «подробной», не только присваивая отелям звездную категорию, но и оценивая их по виду размещения согласно особым критериям. В частности, к существующим ранее гостиницам (Hotel), гостиничным апартаментам (Hotel Apartment) и гостевым домам (Guest House) добавляются курорт (Resort), таймшер (Timeshare), молодежный хостел (Youth Hostel), размещение на основе самообслуживания (Self-Catering) и университетский кампус (University Campus).<br><br>Помимо этого, лучшие пятизвездные отели эмирата будут оцениваться по новому критерию Accolades, согласно которому им будет присваиваться дополнительная «золотая» (Gold) или «платиновая» (Platinum) категория. Этот критерий будет отображать исключительную роскошь.<br><br>По заявлению ДТКМ, главной целью введения новой системы классификации отелей является расширение спектра возможностей размещения, которые должны стать более разнообразными, ориентированными на устойчивое развитие и международные стандарты, но в то же время учитывающими местную специфику.<br><br>Для успешного внедрения новых стандартов качества гостиничной индустрии департамент планирует, с одной стороны, организовать соответствующие семинары и тренинги всем заинтересованным компаниям, а с другой стороны, разработать программное обеспечение, которое позволит автоматизировать процесс классификации отелей относительно той или иной новой категории.<br><br>Источник: Rata-news <img src="https://blogger.googleusercontent.com/tracker/2968402634370166513-7235611856260861949?l=www.novosti.travel" alt="" width="1" height="1">[/HTML]
А возвращается пустота. Кто понимает в чем дело?
P.S. Вам самому чтоб не запутаться со слэшами советую в качестве ограничителей в регулярках использовать символы, которые вообще редко используются... например #
<img src="aaa.png">Полезный текст <a href="https://aa.com">И что он вырежет?</a>
preg_replace('#<img[^>]+src=["\\']https://.+?>#i','',$str)
P.S. Вам самому чтоб не запутаться со слэшами советую в качестве ограничителей в регулярках использовать символы, которые вообще редко используются... например #
preg_replace('#<img[^>]+src=["\\']https://.+?>#i','',$str)
Спасибо за проявленный интерес.
К сожалению первый вариант кушает весь текст, второй не кушает вовсе. В чем причина? У кого какие предложения?
Если не трудно, объясните почему? В теории я понимаю данный шаблон сл. образом:
Ищем имдж, берем до первого знака ">", должно содержать "https", и может содержать еще некий текст после него. Я читал, что конструкция в стиле "<img[^>]" срабатывает не всегда. Может кто описать поподробнее?
mfender, вариант с dom мне думаю не подходит по причине того, что xml с которого я все это беру весьма крив.
mfender, вариант с dom мне думаю не подходит по причине того, что xml с которого я все это беру весьма крив.
если xml крив для разбора DOM-ом, никакой это не xml
Если не трудно, объясните почему? В теории я понимаю данный шаблон сл. образом:
Ищем имдж, берем до первого знака ">", должно содержать "https", и может содержать еще некий текст после него. Я читал, что конструкция в стиле "<img[^>]" срабатывает не всегда. Может кто описать поподробнее?
mfender, вариант с dom мне думаю не подходит по причине того, что xml с которого я все это беру весьма крив.
[^>]+ и [^>]*- подряд идущие НЕскобки или их возможное отсутствие (второй вариант). В данном случае можно было плюс поставить, но ничего страшного.
Ладно, это я из головы писал, сейчас проверю что не так
preg_replace('#<img[^>]+src=["\']https://.+?>#i','',$a)
Слэш лишний был.
По поводу понимания регулярок сейчас найду один сайт полезный
http://strfriend.com/
Вот, еле нашёл. Пришлось найти 3-й номер Хакера и 38-ю страницу. Сложно было найти это всё в онлайне :)
http://strfriend.com/vis?re=%3Cimg[^%3E]%2Bsrc%3D[%22\%27]https%3A%2F%2F.%2B%3F%3E
Вот моя регулярка
Исправил былые ошибки. Работает корректно. лишнего не жрет. Пользуйтесь.
То есть ты считаешь, что .+?> недостаточно понятно?
То есть ты считаешь, что .+?> недостаточно понятно?
В мире много поцев, которые придумают, чтобы такое впихнуть, чтобы ничего не работало...
Чтобы не быть понятым превратно можно и так: <img alt="<привет>" src="https://www.url.com">
Так что супер\мега\гига универсальной тоже не найти... Мало ли в какой параметр элемента впихнуть https://... Всё зависи от требований... Моя регулярка удовлетворяет условию первого поста.
А твоя, кстати, не работает.