RFpro.ru: Программирование на PHP

  Все выпуски  

RusFAQ.ru: Программирование на PHP


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / PHP

Выпуск № 390
от 05.07.2006, 20:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 312, Экспертов: 41
В номере:Вопросов: 1, Ответов: 1


Вопрос № 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 &raquo; 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>';
эффект такой же...

Помогите, пожалуйста...заранее, СпаСибо...
п.с.стоит php 4.3 & apache 1.*
Отправлен: 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.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.34 от 01.06.2006
Яндекс Rambler's Top100

В избранное