Вопрос № 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??
Отправить вопрос экспертам этой рассылки
Приложение (если необходимо):
* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.
Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!
Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.
Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.