html парсер

Статус
В этой теме нельзя размещать новые ответы.
теперь возникла другая проблема.
надо как то сделать, чтобы если в спарсеном коде, есть определённая строка текста, то требуется часть спарсенного блока кода, заменить своим.
Есть у кого ни будь, какие ни будь идеи, как это реализовать?
 
PHP:
preg_match('/%<table>(.*?)</table>%iUms/i', $content, $ret);
Вы хоть сами то поняли, что написали?
+1. А все PHP-шный модификатор U

Добавлено через 3 минуты
Уу.. да еще и двойные ограничители

Добавлено через 5 минут
PHP:
preg_match('{<table[^>]*>(.*?)</table\s*>}is', $content, $ret);
 
не ужели ни у кого нет идей?
может это как то реализовать через функцию preg_replace ?
 
globalmoney, кидай сюда пример "спарсеного кода" и своей строки
 
globalmoney, кидай сюда пример "спарсеного кода" и своей строки
В случае когда требуется замена, то парсится следующий код:
Код:
  <P CLASS="page_TITLE" ALIGN="center" STYLE="margin-bottom: 0px;">
    ОТСЛЕЖИВАНИЕ РЕГИСТРИРУЕМЫХ ПОЧТОВЫХ ОТПРАВЛЕНИЙ
  </P>
  <FORM NAME="PostItemSearchForm" ACTION="/servlet/post_item" METHOD="POST">
  <INPUT TYPE="HIDDEN" NAME="action" VALUE="search">
  <INPUT TYPE="HIDDEN" NAME="searchType" VALUE="barCode">
  <INPUT TYPE="HIDDEN" NAME="show_form" VALUE="yes">
  <TABLE WIDTH="550" CELLSPACING="1" CELLPADDING="2" BORDER="0" ALIGN="center">
    <TR CLASS="row_HEADER_dark" ALIGN="left" VALIGN="middle">
      <TD WIDTH="" COLSPAN=2>Поиск по почтовому идентификатору</TD>
    </TR>
    <TR CLASS="row_1_light" ALIGN="left" VALIGN="top">
      <TD WIDTH="200"><INPUT TYPE="TEXT" NAME="barCode" SIZE="20" MAXLENGTH="14" CLASS="page_INPUT" VALUE="RU" STYLE="width: 100%;"></TD>
      <TD WIDTH="" STYLE="text-align: justify;">Введите почтовый идентификатор отправления, 14-символьный для внутрироссийских РПО или 13-символьный для международных РПО.</TD>
    </TR>
    <TR CLASS="row_1_light" ALIGN="left" VALIGN="middle">
      <TD WIDTH="" COLSPAN=2>
        <INPUT TYPE="HIDDEN" NAME="page" VALUE="1">
        <INPUT TYPE="SUBMIT" NAME="barCodeSearchBtn" VALUE="Поиск" CLASS="page_INPUT" STYLE="font: bold 8pt Verdana, Arial; color: #555555; ">
        <INPUT TYPE="RESET" NAME="barCodeResetBtn" VALUE="Очистить" CLASS="page_INPUT" STYLE="font: bold 8pt Verdana, Arial; color: #555555; ">
      </TD>
    </TR>
  </TABLE>
  </FORM>
  <P CLASS="page_ERROR" ALIGN="center" STYLE="margin-bottom: 10px;">ОШИБКА</P>
  <P CLASS="page_ERROR" ALIGN="center" STYLE="margin-bottom: 10px;">Почтовый идентификатор неправильного формата.<BR>
</P>
  <HR WIDTH="550" NOSHADE SIZE="1">
  <P CLASS="page_TEXT" ALIGN="center" STYLE="margin-top: 10px; margin-bottom: 10px;">
    Информация предоставлена на основе данных, <BR>
    полученных от организаций федеральной почтовой связи.
  </P>
  </P>

т.е. если в спарсеном коде, присутсвует строка:

Код:
<P CLASS="page_ERROR" ALIGN="center" STYLE="margin-bottom: 10px;">Почтовый идентификатор неправильного формата.<BR>
</P>

то надо заменить весь спрасеный код, на свой, например:

Код:
<P CLASS="page_TITLE" ALIGN="center" STYLE="margin-bottom: 0px;">ОТСЛЕЖИВАНИЕ РЕГИСТРИРУЕМЫХ ПОЧТОВЫХ ОТПРАВЛЕНИЙ</P>
  <FORM NAME="PostItemSearchForm" ACTION="" METHOD="POST">
  <TABLE WIDTH="550" CELLSPACING="1" CELLPADDING="2" BORDER="0" ALIGN="center">
    <TR CLASS="row_HEADER_dark" ALIGN="left" VALIGN="middle">
      <TD WIDTH="" COLSPAN=2>Поиск по почтовому идентификатору</TD>
    </TR>
    <TR CLASS="row_1_light" ALIGN="left" VALIGN="top">
      <TD WIDTH="200"><INPUT TYPE="TEXT" NAME="barCode" SIZE="20" MAXLENGTH="14" CLASS="page_INPUT" VALUE="" STYLE="width: 100%;"></TD>
      <TD WIDTH="" STYLE="text-align: justify;">Введите почтовый идентификатор отправления, 14-символьный для внутрироссийских РПО или 13-символьный для международных РПО.</TD>
    </TR>
    <TR CLASS="row_1_light" ALIGN="left" VALIGN="middle">
      <TD WIDTH="" COLSPAN=2>
        <INPUT TYPE="SUBMIT" NAME="barCodeSearchBtn" VALUE="Поиск" CLASS="page_INPUT" STYLE="font: bold 8pt Verdana, Arial; color: #555555; ">
        <INPUT TYPE="RESET" NAME="barCodeResetBtn" VALUE="Очистить" CLASS="page_INPUT" STYLE="font: bold 8pt Verdana, Arial; color: #555555; ">
      </TD>
    </TR>
  </TABLE>
  </FORM>
 
можно так...
PHP:
if(preg_match("/\<P CLASS\=\"page\_ERROR\" ALIGN\=\"center\" STYLE\=\"margin\-bottom\: 10px\;\"\>Почтовый идентификатор неправильного формата\.\<BR\>
\<\/P\>/si", $content)){
то заменяем на наш код..
}

можно этот текст покороче сделать
чтото типа...
PHP:
if(preg_match("/CLASS\=\"page\_ERROR\"/si", $content))
 
extreemal, ок, попробую.
Спасибо за подсказку.
 
Если у вас есть весь код HTML, вы можете попробовать следующее регулярное выражение:

PHP:
$text = preg_replace("@<table>(.*?)</table>@i", "$1", $text);

Mabye вы можете использовать XML Parser для того, чтобы сделать это, не так ли? и если ты хороший Море облицованному гресу с функциями обработки строк (например, "StrPos", "substr_replace" и т.д. ..) Вы можете использовать их для получения данных.

Не так давно я Bult класс, который может анализировать строки вроде "<if condition=""> <foreach loop="">" и все, что использование функции PHP строкой
 
Всем спасибо за помощь, проблема решена. :)
Особая благодарность tostrss и extreemal.
 
preg_match_all('#<table>(.*?)</table>#iUms', file_get_contents($url), $match);
echo($match[1]);
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху