Argentum
6.05.2009 - 18:30
Всем привет!
Представим себе, что есть вот такой текст:
Код |
zero <b>one</b> two <i>three</i> <b>four</b> five |
Ставится задача вытащить всё, что находится внутри тэгов <b>..</b>.
Пробуем применить функцию preg_match со следующим шаблоном поиска:
Вместо того, чтобы выделить два вхождения текста в <b>..</b>. функция констатирует единственное вхождение - от первого <b> до второго </b>, т.е.
Код |
one</b> two <i>three</i> <b>four |
Напрашивается вывод: вместо (.+) в шаблоне надо использовать некое выражение, которое говорит примерно следующее: "должны попадаться любые символы, но только не такая последовательность как </b>".
Я знаю, как вводить отрицание отдельного символа или класса символов. Но я никак не могу въехать, как сделать отрицание последовательности символов
Ткните пальцем, пожалуйста... А то уже замучался.
Спустя 12 минут, 1 секунда (6.05.2009 - 17:42) twin написал(а):
Спустя 2 минуты, 7 секунд (6.05.2009 - 17:44) twin написал(а):
Спустя 50 минут, 5 секунд (6.05.2009 - 18:34) Sylex написал(а):
Argentumжадность отменить просто - или U в конце, или /<b>(.+?)</b>/ и юзать preg_match_all
Спустя 3 часа, 14 минут, 16 секунд (6.05.2009 - 21:48) Grazor написал(а):
PHP |
'/(?:<b>(.+)<\/b>)*/' |
или так
Спустя 29 минут, 38 секунд (6.05.2009 - 22:18) Sylex написал(а):
Grazorобъясни свою регулярку
_____________