Вопрос № 47732: Доброго времени суток, уважаемые эксперты..
у меня вопрос по регулярам или подмены строк:
если вкратце, то я внутри php редактирую rss-файл, а точнее
<item>
<title>HTML - верстка дизайна</title>
<lin...
Вопрос № 47.732
Доброго времени суток, уважаемые эксперты..
у меня вопрос по регулярам или подмены строк:
если вкратце, то я внутри php редактирую rss-файл, а точнее
<item>
<title>HTML - верстка дизайна</title>
<link>http://localhost/projects/2.html</link>
<description>
Заказчик: Minoltry (Minoltry)<br />Категория: Разработка web-сайтов/SEO » HTML-верстка<br />Бюджет: Не определён<br /><br />Необходимо правильно сверстать готовые PSD файлы для двух сайтов (по 2 страницы для каждого сайта: главная и дочерняя).<br />
с учетом кроссплатформенности.
</description>
<comments>http://localhost/projects/2.html#bids</comments>
<guid>http://localhost/projects/2.html</guid>
<pubDate>Wed, 28 Jun 2006 22:50:39 +0300</pubDate>
</item>
таких айтемов много..
написал регуляр:
$reg = '<item>.+<link>'.$replace_link.'</link>.+</item>';
но загвоздка в том, что он выбирает начало первого вхождения и конец последнего.... в итоге получаем всего лишь 1 item:((
пытался ограничить::
$reg = '(<item>){1}.+<link>'.$replace_link.'</link>.+</item>';
эффект такой же...
Отправлен: 30.06.2006, 01:38
Вопрос задал: Keane (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 17)
Отвечает: Straight
Здравствуйте, Keane!
Все дело в "принципе жадности" - регексп захватывает самую большую строку, которая только подходит под выражение. Но это можно отключить.
Например так:
preg_match('/.+?/',$s);
(знак вопроса после плюса)
или так:
preg_match('/.+/U',$s);
(модификатор U)
Примечание: нужно пользоваться только перловыми выражениями (preg) а не posixными (ereg)
Ответ отправил: Straight (статус: Студент)
Ответ отправлен: 30.06.2006, 10:21 Оценка за ответ: 5 Комментарий оценки: Спасибо за помощь... а можно так же сделать, но для POSIX??