preg_replace. Один рег+однинаковые данные!=однинаковый результат!?

andry

Новичок
preg_replace. Один рег+однинаковые данные!=однинаковый результат!?

В PCRE новичок, просьба не пинать.
Смысл рега(может проще можно?):
Проверить есть-ли атрибут class у клетки, если нет, то проставить. Потом вырезать ширину и высоту у клетки.


Код:
$txt = preg_replace("!<td(.*?)>(.*?)</td>!sie","'<td'.check_atr('\\1').'>\\2</td>'", $txt);
function check_atr($txt){
if(stristr($txt, "class=")===false){
$txt .= " class=tabcontent";
}
return preg_replace("'(width|height)=(\d+)'si", "", $txt);
}


На входе:
<TR> <TD class=tabheader>qq</TD> <TD class=tabheader>qq</TD></TR> <TR> <TD class=tabcontent>2</TD> <TD class=tabcontent>2</TD></TR>
На выходе:
<TR> <td class=tabcontent>qq</td> <td class=tabheader>qq</td></TR> <TR> <td class=tabcontent>2</td> <td class=tabcontent>2</td></TR>
Т.е. он посчитал, что у первой клетки нет атрибутов!!! И заменил класс.
Где грабли?

Заранее спасибо!
 

Altex

Новичок
Граблями не надо программировать, попробуй руками.
PHP:
<?php

$txt = '<TR> <TD class=tabheader>qq</TD> <TD class=tabheader>qq</TD></TR> <TR> <TD>2</TD> <TD class=tabcontent>2</TD></TR> ';

$txt = preg_replace("!<td(.*?)>(.*?)</td>!sie","'<td'.check_atr('\\1').'>\\2</td>'", $txt);
function check_atr($txt){
if(stristr($txt, "class=")===false){
$txt .= " class=tabcontent";
}
return preg_replace("'(width|height)=(\d+)'si", "", $txt);
}

echo $txt;
?>
Если у тебя есть сомнения в правильности работы скрипта, то заодно укажи версию софта.
 

andry

Новичок
Дело было в другом реге, ночь однако.

Altex:
Я уважаю участников форума и прошу относиться ко мне также! Первое предложение было совсем лишним!

Спасибо.
 
Сверху