очистка тегов

дедушка АУ

Новичок
очистка тегов

Всем привет)
такой вот вопрос: как мне очистить все теги типа: <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center" align="center"><b style="mso-bidi-font-weight: normal">

с целью оставить только <p align="center"><b>

полная очистка работает
$Cont = preg_replace("/<([a-z]+[\d]?)[^>]*>/i","<$1>",$Cont);

а вот оставить align="center" не получается
пробовал так $Cont = preg_replace("/<([a-z]+[\d]?).*( align=\"center\")*.*>/i","<$1$2>",$Cont);
 
Используй позиционные проверки в регулярных выражениях:
http://phpclub.ru/detail/article/regexp_2
 
ИванЧай
дело в том что align="center" не всегда будет в конце тега
и отмазацца конструкцией типа:
$Cont = preg_replace("/(?<=<)[a-z]+[\d]?([^>]*)(?=align=\"center\">)/i","",$Cont);

вряд ли получится :(
 
а зачем тебе понадобилось одно выражение? ведь можно несколькими: сначала убираешь все class="что-то", затем style="что-то"...
 
sage
угу попробуй угадать что там тебе Ворд подсунет
хотелось бы удалять все внутри тега кроме align="center"
 
PHP:
$str = '<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center" align="center"><b style="mso-bidi-font-weight: normal">';

echo preg_replace('~<([^ ]+?).*?(?: ( align="[^"]+?").*?)?>~si', '<\1\2>', $str);

Без пробела после ?:
 
s - модификатор, при котором . совпадает со всеми символами, в том числе и символом перевода строки
 
Сверху