Модераторы: Aliance, skyboy, MoLeX, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Чистка ХТМЛ кода 
V
    Опции темы
Luceus
Дата 7.6.2006, 11:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 105
Регистрация: 24.3.2006

Репутация: нет
Всего: 1



Есть следующий ХТМЛ-код:

Код

<TABLE BORDER CELLSPACING=0 class="pricelist1">
<TR>
<TD BORDERCOLOR=#ffffff color="black">&nbsp;
<TD BORDERCOLOR=#ffffff>&nbsp;
<TD BORDERCOLOR=#ffffff><FONT SIZE=3>срок: 17.04.06 оплачен</FONT>
<TD BORDERCOLOR=#ffffff>dd sert
ert
<i>asdf</i>
<TD BORDERCOLOR=#ffffff>&nbsp;
<TD ALIGN=RIGHT BORDERCOLOR=#ffffff><I><B>&nbsp;</B></I>
<TD ALIGN=RIGHT BORDERCOLOR=#ffffff><I><B>&nbsp;</B></I>
<TD BORDERCOLOR=#ffffff>&nbsp;
<TD BORDERCOLOR=#ffffff>&nbsp;
<TD BORDERCOLOR=#ffffff>&nbsp;
</TR>
<TR>
<TD BORDERCOLOR=#ffffff>&nbsp;
<TD BORDERCOLOR=#ffffff>&nbsp;
<TD BORDERCOLOR=#ffffff>&nbsp;
<TD BORDERCOLOR=#ffffff>&nbsp;
<TD BORDERCOLOR=#ffffff>&nbsp;
<TD BORDERCOLOR=#ffffff>&nbsp;
<TD BORDERCOLOR=#ffffff>&nbsp;
<TD ALIGN=RIGHT BORDERCOLOR=#ffffff><FONT SIZE=5><I><B>&nbsp;</B></I></FONT>
<TD ALIGN=RIGHT BORDERCOLOR=#ffffff><FONT SIZE=5><I><B>&nbsp;</B></I></FONT>
<TD ALIGN=RIGHT BORDERCOLOR=#ffffff><FONT SIZE=5><I><B>ПП "ПОЛ_САН"</B></I></FONT>
</TR>
<TR>
<TD BORDERCOLOR=#ffffff>&nbsp;
<TD BORDERCOLOR=#ffffff>&nbsp;
<TD BORDERCOLOR=#ffffff>&nbsp;
<TD BORDERCOLOR=#ffffff>&nbsp;
<TD BORDERCOLOR=#ffffff>&nbsp;
<TD BORDERCOLOR=#ffffff>&nbsp;
<TD BORDERCOLOR=#ffffff>&nbsp;
<TD BORDERCOLOR=#ffffff>&nbsp;
<TD BORDERCOLOR=#ffffff>&nbsp;
<TD ALIGN=RIGHT VALIGN=CENTER BORDERCOLOR=#ffffff><I><U>05.06.06 16:35:04 (Соколов)</U></I>
</TR>
<TR>
<TD BORDERCOLOR=#ffffff>&nbsp;
<TD BORDERCOLOR=#ffffff>&nbsp;
<TD BORDERCOLOR=#ffffff>&nbsp;
<TD BORDERCOLOR=#ffffff>&nbsp;
<TD BORDERCOLOR=#ffffff>&nbsp;
<TD ALIGN=RIGHT BORDERCOLOR=#ffffff><FONT SIZE=3><B>&nbsp;</B></FONT>
<TD ALIGN=RIGHT BORDERCOLOR=#ffffff><FONT SIZE=3><B>Валюта: грв</B></FONT>
<TD ALIGN=RIGHT BORDERCOLOR=#ffffff><FONT SIZE=3><B>&nbsp;</B></FONT>
<TD ALIGN=RIGHT BORDERCOLOR=#ffffff><FONT SIZE=3><B>&nbsp;</B></FONT>
<TD ALIGN=RIGHT BORDERCOLOR=#ffffff><FONT SIZE=3><B>&nbsp;</B></FONT>
</TR>
<TR>
<TD BORDERCOLOR=#ffffff>&nbsp;
<TD ALIGN=CENTER VALIGN=CENTER BORDERCOLOR=#ffffff COLSPAN=9><B>БАЛАНС
07.12.05 - 05.06.06</B>
</TR>
<TR>
<TD BORDERCOLOR=#ffffff>&nbsp;
<TD ALIGN=CENTER BORDERCOLOR=#ffffff COLSPAN=9><FONT SIZE=4><B>"Бочкаревы","ЧП Бочкарев В.В.","ЧП Бочкарева Т.В."</B></FONT>
</TR>
<TR>
<TD BORDERCOLOR=#ffffff>&nbsp;
<TD BORDERCOLOR=#ffffff>&nbsp;
<TD BORDERCOLOR=#ffffff>&nbsp;
<TD BORDERCOLOR=#ffffff>&nbsp;
<TD BORDERCOLOR=#ffffff>&nbsp;
<TD BORDERCOLOR=#ffffff><FONT SIZE=4><B>&nbsp;</B></FONT>
<TD BORDERCOLOR=#ffffff><FONT SIZE=4><B>&nbsp;</B></FONT>
<TD BORDERCOLOR=#ffffff>&nbsp;
<TD BORDERCOLOR=#ffffff>&nbsp;
<TD BORDERCOLOR=#ffffff>&nbsp;
</TR>
<TR>
<TD VALIGN=CENTER BORDERCOLOR=#ffffff>&nbsp;
<TD ALIGN=CENTER VALIGN=CENTER BGCOLOR=#c0dcc0 COLSPAN=4 ROWSPAN=2><B>Документ</B>
<TD ALIGN=CENTER VALIGN=CENTER BGCOLOR=#c0dcc0 ROWSPAN=2><B>Состояние документа</B>
<TD ALIGN=CENTER VALIGN=CENTER BGCOLOR=#c0dcc0 COLSPAN=4><B>ПП "ПОЛ_САН"</B>
</TR>
<TR>
<TD VALIGN=CENTER BORDERCOLOR=#ffffff>&nbsp;
<TD ALIGN=CENTER VALIGN=CENTER BGCOLOR=#c0dcc0><B>Отгзузка</B>
<TD ALIGN=CENTER VALIGN=CENTER BGCOLOR=#c0dcc0><B>Оплата</B>
<TD ALIGN=CENTER VALIGN=CENTER BGCOLOR=#c0dcc0><B>Остаток товарного кредита</B>
<TD ALIGN=CENTER VALIGN=CENTER BGCOLOR=#c0dcc0><B>Остаток всей оплаты</B>
</TR>
<TR>
<TD VALIGN=CENTER BORDERCOLOR=#ffffff>&nbsp;
<TD VALIGN=CENTER><FONT SIZE=3><B>&nbsp;</B></FONT>
<TD VALIGN=CENTER><FONT SIZE=3><B>&nbsp;</B></FONT>
<TD VALIGN=CENTER><FONT SIZE=3><B>&nbsp;</B></FONT>
<TD VALIGN=CENTER><FONT SIZE=3><B>&nbsp;</B></FONT>
<TD VALIGN=CENTER><FONT SIZE=3><B>&nbsp;</B></FONT>
<TD VALIGN=CENTER><FONT SIZE=3><B>&nbsp;</B></FONT>
<TD VALIGN=CENTER><FONT SIZE=3><B>&nbsp;</B></FONT>
<TD VALIGN=CENTER><FONT SIZE=3><B>&nbsp;</B></FONT>
<TD VALIGN=CENTER><FONT SIZE=3><B>&nbsp;</B></FONT>
</TR>
<TR>
<TD BORDERCOLOR=#ffffff>&nbsp;
<TD>&nbsp;
<TD>&nbsp;
<TD>&nbsp;
<TD>&nbsp;
<TD ALIGN=RIGHT COLSPAN=2><FONT SIZE=3><B>&nbsp;</B></FONT>
<TD ALIGN=RIGHT VALIGN=CENTER BGCOLOR=#fffbf0><FONT SIZE=3><B>&nbsp;</B></FONT>
<TD ALIGN=RIGHT VALIGN=CENTER BGCOLOR=#fffbf0><FONT SIZE=3><B>295'000.00</B></FONT>
<TD ALIGN=RIGHT VALIGN=CENTER BGCOLOR=#fffbf0><FONT SIZE=3><B>&nbsp;</B></FONT>
</TR>
<TR>
<TD VALIGN=CENTER BORDERCOLOR=#ffffff>&nbsp;
<TD VALIGN=CENTER><FONT SIZE=3><B>Входящее сальдо</B></FONT>
<TD VALIGN=CENTER><FONT SIZE=3><B>&nbsp;</B></FONT>
<TD VALIGN=CENTER><FONT SIZE=3><B>&nbsp;</B></FONT>
<TD VALIGN=CENTER><FONT SIZE=3><B>&nbsp;</B></FONT>
<TD ALIGN=RIGHT VALIGN=CENTER><FONT SIZE=3><B>&nbsp;</B></FONT>
<TD ALIGN=RIGHT VALIGN=CENTER><FONT SIZE=3><B>112'742.19</B></FONT>
<TD ALIGN=RIGHT VALIGN=CENTER><FONT SIZE=3><B>&nbsp;</B></FONT>
<TD ALIGN=RIGHT VALIGN=CENTER><FONT SIZE=2 COLOR=#808080>295'000.00</FONT>
<TD ALIGN=RIGHT VALIGN=CENTER><FONT SIZE=2 COLOR=#808080>772'626.04</FONT>
</TR>
<TR>
<TD VALIGN=CENTER BORDERCOLOR=#ffffff>&nbsp;
<TD VALIGN=CENTER><FONT SIZE=3>&nbsp;</FONT>
<TD VALIGN=CENTER><FONT SIZE=3>&nbsp;</FONT>
<TD VALIGN=CENTER COLSPAN=2><FONT SIZE=3>ЧП Бочкарев В.В.
Накладная на расход ТМЦ РК0350 (13.12.05)
доставка:   .  .</FONT>
<TD ALIGN=CENTER VALIGN=CENTER BGCOLOR=#c0dcc0><FONT SIZE=3>срок: 11.02.06
товарный кредит</FONT>
<TD ALIGN=RIGHT VALIGN=CENTER><FONT SIZE=3>60'750.58</FONT>
<TD ALIGN=RIGHT VALIGN=CENTER><FONT SIZE=3>&nbsp;</FONT>
<TD ALIGN=RIGHT VALIGN=CENTER><FONT SIZE=2 COLOR=#808080>182'257.81</FONT>
<TD ALIGN=RIGHT VALIGN=CENTER><FONT SIZE=2 COLOR=#808080>772'626.04</FONT>
</TR>
<TR>
<TD VALIGN=CENTER BORDERCOLOR=#ffffff>&nbsp;
<TD VALIGN=CENTER><FONT SIZE=3>&nbsp;</FONT>
<TD VALIGN=CENTER><FONT SIZE=3>&nbsp;</FONT>
<TD VALIGN=CENTER COLSPAN=2><FONT SIZE=3>ЧП Бочкарев В.В.
Накладная на расход ТМЦ РК0367 (13.12.05)
доставка:   .  .</FONT>
<TD ALIGN=CENTER VALIGN=CENTER BGCOLOR=#c0dcc0><FONT SIZE=3>срок: 11.02.06
товарный кредит</FONT>
<TD ALIGN=RIGHT VALIGN=CENTER><FONT SIZE=3>8'327.30</FONT>
<TD ALIGN=RIGHT VALIGN=CENTER><FONT SIZE=3>&nbsp;</FONT>
<TD ALIGN=RIGHT VALIGN=CENTER><FONT SIZE=2 COLOR=#808080>121'507.23</FONT>
<TD ALIGN=RIGHT VALIGN=CENTER><FONT SIZE=2 COLOR=#808080>772'626.04</FONT>
</TR>
<TR>
<TD VALIGN=CENTER BORDERCOLOR=#ffffff>&nbsp;
<TD VALIGN=CENTER><FONT SIZE=3>&nbsp;</FONT>
<TD VALIGN=CENTER><FONT SIZE=3>&nbsp;</FONT>
<TD VALIGN=CENTER COLSPAN=2><FONT SIZE=3>ЧП Бочкарев В.В.
Накладная на расход ТМЦ ЧП0006 (17.01.06)
доставка:   .  .</FONT>
<TD ALIGN=CENTER VALIGN=CENTER BGCOLOR=#dd9cb3><FONT SIZE=3>срок: 17.04.06
оплачен</FONT>
<TD ALIGN=RIGHT VALIGN=CENTER><FONT SIZE=3>144'412.75</FONT>
<TD ALIGN=RIGHT VALIGN=CENTER><FONT SIZE=3>&nbsp;</FONT>
<TD ALIGN=RIGHT VALIGN=CENTER><FONT SIZE=2 COLOR=#808080>113'179.93</FONT>
<TD ALIGN=RIGHT VALIGN=CENTER><FONT SIZE=2 COLOR=#808080>772'626.04</FONT>
</TR>
<TR>
<TD VALIGN=CENTER BORDERCOLOR=#ffffff>&nbsp;
<TD VALIGN=CENTER><FONT SIZE=3>&nbsp;</FONT>
<TD VALIGN=CENTER><FONT SIZE=3>&nbsp;</FONT>
<TD VALIGN=CENTER COLSPAN=2><FONT SIZE=3>ЧП Бочкарева Т.В.
Накладная на расход ТМЦ РК0046 (13.02.06)
доставка: 25.02.06</FONT>
<TD ALIGN=CENTER VALIGN=CENTER BGCOLOR=#dd9cb3><FONT SIZE=3>срок: 26.04.06
оплачен</FONT>


Нужно его подчистить от ненужной грязи. ХТМЛ экспортируется из 1С бухгалтерии.

Я написал на ПХП следующий код:

Код

<?
  $file = implode("", file("id1.html"));

  $file = preg_replace('/\r\n/', '', $file);

  $file = preg_replace('/<[\/]?(FONT|B|I|U)[^>]*>/i', '', $file);

  $file = preg_replace('/(<TD[^>]*>.*?)(<TR|<TD)/', '\\1</TD>\\2', $file);

//  $file = preg_replace('/&nbsp;/', '', $file);

  $search = array('/\sBORDERCOLOR=\#ffffff/',
          '/\sVALIGN=CENTER/'
                 );
  $replace = array('',
           ''
                  );

  $file = preg_replace($search, $replace, $file);


  echo $file;
?>


Работает наполовину. Не понятно, как все-таки закрыть теги <TD>, которые просто открываются но не закрываются автоматически.


Спасибо. 
PM MAIL WWW   Вверх
xolod
Дата 7.6.2006, 14:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 148
Регистрация: 24.5.2005
Где: Когда: Что:

Репутация: 3
Всего: 13



Задача сводится к поиску после открытого <td> либо следующий <td>, либо закрытый </tr> и вставки перед ним </td>
Решается так:
Код

$pattern = '/<td([^>]*?)>(.*?)(?=<td[^>]*?>|<\/tr>)/is';
$replace = '<td$1>$2</td>$3';
$result = preg_replace($pattern, $replace, $page);

echo(htmlspecialchars($result));


Только lookahead (опция ?=) немного (или много?) подтормаживает в php. Толи в preg'е глюк, то ли одно из двух.
PM MAIL   Вверх
Luceus
Дата 9.6.2006, 16:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 105
Регистрация: 24.3.2006

Репутация: нет
Всего: 1



Спасибо, работает =) 
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Тексты | Следующая тема »


 




[ Время генерации скрипта: 0.0434 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.