Помогите правильно сосотавить регулярное выражение

интернет php perl regexp preg

Всем привет

Не получается составить регулярное выражение (((

Имея блок кода:
<font>Автор: <a href="/user/*****/">Photoshop</a></font>

Нужно чтоб на выходе получился массив:
Array
(
[0]=>'<font>',
[1]=>'Автор: ',
[2]=>'<a href="/user/*****/">',
[3]=>'Photoshop',
[4]=>'</a>',
[5]=>'</font>'
)

Пытаюсь это сделать регулярным выражением

REGEXP: <.*?>|>.*?<

, но увы не то что нужно получается ((

Подскажите плз.

Примечание:
Наверно неправильно выразился, мне нужно регулярное выражение которое найдет все теги (т.е. между < и > ) и весь текст между тегами (т.е. между > и < ). Я привел частный случай, а нужен общий. При этом нужно чтобы порядок следования остался правильным, поэтому нельзя сделать двумя разным регулярками.
Ответы:
Можно так :
$str ="<font>Автор: <a href=\"/user/*****/\">Photoshop</a></font>";
preg_match_all('/<\/?[^>]*>|(?<=^|>)[^<]+(?=<|$)/',$str,$matches);
$array = $matches[0];
print_r($array);
Помоему лучше, именно в этом случае, копать в сторону DOM. Останется только обойти узлы и снять свойства. Нечего придумывать велосипед.
А если надо, то нужна уверенность что структура вашей строки останется неизменной, в противном случае нужно придумать что своё, но очень похожее на DOM. Я думаю что у perl должен быть модуль для этого.
HTML::TreeBuilder доступен на CPAN


15 лет назад

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

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

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