Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > PHP: Тексты > регулярка |
Автор: Frozen_Coyote 1.10.2014, 15:00 | ||||
Привет ребят! Тут у меня небольшая непонятка, прошу компетентных лиц разъяснить! ![]() задача: ищем с помощью функции preg_match_all в html тексте картинки, но не все, а те, у которых атрибут id="img_некое_число" пишем (все, подчеркиваю, по моей, как уже понятно, неправильной логике)
что мы видим в итоге
элементы 0 и 2 - то что надо, а вот 1 и 3 - к ним спереди прицепился ненужный довесок. Вроде от жадности модификатором отучено. Объясните почему и как устранить? Спасибо ![]() |
Автор: AVA12 1.10.2014, 17:01 |
Вот так всегда - пытаются решить проблему с помощью магического регвыра, а в результате получают две проблемы. Сделал модификаторы повторения нежадными? Правильно, но недостаточно. Где в регвыре сказано, что ид должен присутствовать именно в искомом теге? Нигде. В результате захватывается кусок документа до ближайшего подходящего ид. В данном случае проблема все-таки решается регвыром: нужно заменить класс "любой символ" на "не правая угловая скобка", т. е. заменить . на [^>] |
Автор: Gold Dragon 20.10.2014, 13:54 | ||
Попробуй так
|