Как составить регулярное выражение rss livejournal.com

интернет php RSS регулярные выражения livejournal

Есть RSS-поток с лайвджорнала. Там все стандартное, но есть несколько элементов <category> подряд. Не пойму, как регулярками извлечь их все.

Сейчас это выглядит так:
$reg_exp = '#<item>.*?';
$reg_exp .= '<pubDate>(.*?)<\/pubDate>.*?';
$reg_exp .= '<title>(.*?)<\/title>.*?';
$reg_exp .= '<link>http://community.livejournal.com/любое сообщество/(.*?).html<\/link>.*?';
$reg_exp .= '<description>(.*?)<\/description>.*?';
$reg_exp .= '<category>(.*?)<\/category>.*?';
$reg_exp .= '<lj:poster>(.*?)<\/lj:poster>.*?';
$reg_exp .= '<\/item>#si';

При этом извлекается _только один тэг_. Нужны все.

Примечание:
Короче как вариант, перед применением регулярки пройтись стр_реплейсом:
$xml_data = str_replace("</category>\r\n <category>", ', ', $xml_data); Тогда тэги в одном item-е окажутся в одном элементе, через запятую.
Если кто подскажет более красивое решение - будет здорово.

Примечание:
Я вроде в тэгах написал php :-) А знать бы как там циклы использовать, курю мануал, что-то бестолку.
А правда, что регулярки медленнее работают, чем строковые функции?

Примечание:
Не-не-не-не, циклы в php я знаю :-) Я думал там какой-то цикл в самих регулярках... За ссылки по парсингу rss-потоков отдельное спасибо.
Ответы:
В принципе ясно, но все же, хотя бы язык указал...
Дополнение #2
На мой взгляд, самым лаконичным, логичным и элегантным, в данном случае, будет вариант с использованием XPath.
Я не совсем понял что должно получится на выходе(лениво регулярку разбирать), но если напишете конкретный пример того, что хотите на выходе, то я смогу и код набросать.


15 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.