Небольшое регулярное выражаение

smkdesign

Новичок
Небольшое регулярное выражаение

Всем привет

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

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

Пытаюсь это сделать регулярным выражением
PHP:
REGEXP: <.*?>|>.*?<
, но увы не то что нужно получается ((

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

smkdesign

Новичок
С своего сайта, нужно для пост обработки контента через ob_start
 

freeek

Новичок
PHP:
$string = '<font>Автор: <a href="/user/*****/">Photoshop</a></font>';
$regex = '%(<font>)\s*([а-я]+:\s*)(<a[^<]*>)([^<]+)(</a>)(</font>)%i';
preg_match( $regex, $string, $macth );
echo '<pre>';
print_r( $macth );
echo '</pre>';
 

smkdesign

Новичок
Спасибо

Только это частный случай, а мне нужен в общем чтоб оно срабатывало независимо от количества тегов и их особенностей. Т.е. для всего моего контента.

Можно конечно тупо в лоб через strpos сделать, но не нравиться мне такой вариант...
 

fixxxer

К.О.
Партнер клуба
Мой mod_telepat подсказывает, что, возможно, тебе на самом деле нужно [m]output_add_rewrite_var[/m]. А вообще ты бы описал задачу, зачем ты это, собственно, делаешь.
 

Вурдалак

Продвинутый новичок
Если это твой код, то почему нельзя сразу, перед формированием HTML-кода, пропускать URI через какой-то обработчик?
 

smkdesign

Новичок
Splurov
Спасибо

Используя проверки составил выражение так:
PHP:
(?<=>).*?(?=<)|(?<=>).*?(?=<)
Но оно опять же оно не позволяет получить нужную информацию. Оно позволяет получить весь текст между тегами,а нужно в свою очередь весь текст между тегами и все теги также.
 

Splurov

Новичок
Прочитай внимательно свой первый пост в теме, мой ответ и регулярное выражение из твоего последнего ответа. Я говорил только о второй части условия (">.*?<") и уж, тем более, не предлагал дублировать исправленную вторую часть в первую.
 

smkdesign

Новичок
Вери фенкс!

Да, не внимательно прочел, итоговое выражение имеет вид:
PHP:
<.*?>|(?<=>).*?(?=<)
 
Сверху