Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как убрать изображение из текста

18K
02 июня 2011 года
imAlex
179 / / 29.07.2010
Всем привет.
Есть проблема. В тексте имеются изображения сл. видов:
 
Код:
1) <img src="http://tonkosti.ru/images/6/65/%D0%92%D0%B8%D0%B4_%D0%BD%D0%B0_%D0%9D%D1%8C%D1%8E-%D0%99%D0%BE%D1%80%D0%BA.jpg" width="200" border="0" height="135">

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="http:\/\/.*?\/>/i',"  ",$text)
preg_replace('/\<img.*?src="https:\/\/.*?\/>/i',"  ",$text)

Первый вариант убирает только (1)-ые изображения, а второй не убирает ничего. Подскажите как так получается и как исправить?
18K
02 июня 2011 года
imAlex
179 / / 29.07.2010
Нашел решение данного вопроса методом перебора.
Результат:
 
Код:
/<img[\S ]*https:\/\/blogger.googleusercontent.com[\S ]*>/
366
03 июня 2011 года
int
668 / / 30.03.2005
Цитата: imAlex
 
Код:
https:\/\/.*?\/>

Здесь подразумевается, что картинка заканчивается на />

18K
03 июня 2011 года
imAlex
179 / / 29.07.2010
Цитата: int
Здесь подразумевается, что картинка заканчивается на />


То-есть вместо

 
Код:
/<img[\S ]*https:\/\/blogger.googleusercontent.com[\S ]*>/

можно написать
 
Код:
/<img[\S ]*https:\/\/.*?\/>/
?
В моем варианте обнаружена ошибка. По какой-то причине он иногда удаляет весь текст.
18K
03 июня 2011 года
imAlex
179 / / 29.07.2010
Все равно ерунда получается. По какой-то причине в некоторых местах вырезает весь текст.
18K
03 июня 2011 года
imAlex
179 / / 29.07.2010
Вот фрагмент моего кода:
 
Код:
preg_replace('/<img[\S ]*https:\/\/.*?>/',"",(strip_tags($rss_data['text'][$i], '<img><br>')))

В "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]
А возвращается пустота. Кто понимает в чем дело?
8
04 июня 2011 года
mfender
3.5K / / 15.06.2005
а не проще DOM использовать?
14
04 июня 2011 года
Phodopus
3.3K / / 19.06.2008
А это все совпадает с шаблоном. Нужен или не-жадный квантификатор, либо указать, скажем, невозможность появления > символа
369
04 июня 2011 года
Kesano
451 / / 09.10.2007
#<img.+?https:\/\/.+?># эта регулярка съедает ваш https. Наслаждайтесь.

P.S. Вам самому чтоб не запутаться со слэшами советую в качестве ограничителей в регулярках использовать символы, которые вообще редко используются... например #
366
07 июня 2011 года
int
668 / / 30.03.2005
Цитата: Kesano
#<img.+?https:\/\/.+?># эта регулярка съедает ваш https. Наслаждайтесь.


<img src="aaa.png">Полезный текст <a href="https://aa.com">И что он вырежет?</a>

preg_replace('#<img[^>]+src=["\\']https://.+?>#i','',$str)

18K
07 июня 2011 года
imAlex
179 / / 29.07.2010
Цитата: Kesano
#<img.+?https:\/\/.+?># эта регулярка съедает ваш https. Наслаждайтесь.

P.S. Вам самому чтоб не запутаться со слэшами советую в качестве ограничителей в регулярках использовать символы, которые вообще редко используются... например #



Цитата: int
<img src="aaa.png">Полезный текст <a href="https://aa.com">И что он вырежет?</a>

preg_replace('#<img[^>]+src=["\\']https://.+?>#i','',$str)



Спасибо за проявленный интерес.
К сожалению первый вариант кушает весь текст, второй не кушает вовсе. В чем причина? У кого какие предложения?

18K
07 июня 2011 года
imAlex
179 / / 29.07.2010
Сработал вариант
 
Код:
preg_replace('/<img[^>]*https:\/\/.*?>/',"",...

Если не трудно, объясните почему? В теории я понимаю данный шаблон сл. образом:
Ищем имдж, берем до первого знака ">", должно содержать "https", и может содержать еще некий текст после него. Я читал, что конструкция в стиле "<img[^>]" срабатывает не всегда. Может кто описать поподробнее?

mfender, вариант с dom мне думаю не подходит по причине того, что xml с которого я все это беру весьма крив.
14
07 июня 2011 года
Phodopus
3.3K / / 19.06.2008
Цитата: imAlex

mfender, вариант с dom мне думаю не подходит по причине того, что xml с которого я все это беру весьма крив.


если xml крив для разбора DOM-ом, никакой это не xml

366
08 июня 2011 года
int
668 / / 30.03.2005
Цитата: imAlex
Сработал вариант
 
Код:
preg_replace('/<img[^>]*https:\/\/.*?>/',"",...

Если не трудно, объясните почему? В теории я понимаю данный шаблон сл. образом:
Ищем имдж, берем до первого знака ">", должно содержать "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
Вот моя регулярка

369
09 июня 2011 года
Kesano
451 / / 09.10.2007
#<img.[^\>]+?https:\/\/.[^\>]+?>#
Исправил былые ошибки. Работает корректно. лишнего не жрет. Пользуйтесь.
366
10 июня 2011 года
int
668 / / 30.03.2005
Зачем экранировать угловые скобки и чем эта регулярка принципиально отличается от моей, кроме того, что я предположил, что значение src обязано быть в кавычках? о_О

Цитата:
<img src="important_image.png" alt="https://yeeeeah!">Эту картинку не нужно убирать



Цитата:
.[^\>]+?>

То есть ты считаешь, что .+?> недостаточно понятно?

369
10 июня 2011 года
Kesano
451 / / 09.10.2007
Цитата: int
Зачем экранировать угловые скобки и чем эта регулярка принципиально отличается от моей, кроме того, что я предположил, что значение src обязано быть в кавычках? о_О
То есть ты считаешь, что .+?> недостаточно понятно?


В мире много поцев, которые придумают, чтобы такое впихнуть, чтобы ничего не работало...
Чтобы не быть понятым превратно можно и так: <img alt="<привет>" src="https://www.url.com">
Так что супер\мега\гига универсальной тоже не найти... Мало ли в какой параметр элемента впихнуть https://... Всё зависи от требований... Моя регулярка удовлетворяет условию первого поста.
А твоя, кстати, не работает.

366
14 июня 2011 года
int
668 / / 30.03.2005
Я проверял, работает.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог