Парсинг страницы

Статус
В этой теме нельзя размещать новые ответы.

Stripe

Участник
Регистрация
20 Окт 2007
Сообщения
164
Реакции
9
Есть кусок кода:
HTML:
<tr align=left ><td><a href='http://111'>крукркур</a><td>цфукфк<td>птпатn<td>фыафца<td>ваыи<td>укну<tr align=left class="ch"><td><a href='http://222'>укнркр</a><td>нонеоне<td>чьнн<td>аетеат <td>online<td>rock<tr align=left ><td><a href='http://333'>аттпта</a><td>тнртн<td>кненкен<td>сноно<td>апраер<td>ьорьро<tr align=left class="ch"><td><a href='http://444'>екнкен</a><td>ролорл<td>чсячся<td>фывфывфыв<td>фвфывфцв<td>вапвапвап</table>
Пытаюсь распарсить его таким образом:
PHP:
$pagecontent = ereg_replace("<tr align=left >","",$pagecontent);
$pagecontent = ereg_replace("<tr align=left class=\"ch\">","",$pagecontent);
$pagecontent = ereg_replace("<a href='http://","",$pagecontent);
$pagecontent = ereg_replace("</a>","",$pagecontent);
$pagecontent = ereg_replace("'>",":",$pagecontent);
$pagecontent = ereg_replace("</table>","",$pagecontent);
$pagecontent = ereg_replace("<td>",":",$pagecontent); 
$html = explode("\n",$pagecontent);
for($i=0;$i<=sizeOf($html);$i++)
    {
    if(strstr($html[$i],":"))
        {
        $tmp = explode(":",$tmp);
        $chto[] = array(
            "aaa" => $tmp[0],
			"bbb" => $tmp[1],
			"eee" => $tmp[2],
			"www" => $tmp[3]
            );
		}
	}
print "<pre>";
print_r($chto);
print "</pre>\n";

В ответ получаю пустой массив. В чем может быть проблема?
 
В этой строчке:

PHP:
 $tmp = explode(":",$tmp);

Переменная $tmp - пустая. Нужно:

PHP:
 $tmp = explode(":",$html[$i]);
 
мммм... запись исходного кода HTML которую я привел, она в одну строку идет? Как разбить ее на 4? Каждая новая строка начинается с
.
 
мммм... запись исходного кода HTML которую я привел, она в одну строку идет? Как разбить ее на 4? Каждая новая строка начинается с .

добавь строку

PHP:
$pagecontent = ereg_replace("<tr","\r\n<tr",$pagecontent);
 
БАЛЬШОЕ ЧЕЛОВЕЧЕСКОЕ СПАСИБО!
Все работает, код везде работал в парсерах, а тут перестал вдруг, я думал с ума схожу.
 
Странный парсинг.
Почему используеться ereg, когда тоже самое делается обычным str_replace. Если уж использовать регулярные, то примерно в таком контексте
PHP:
preg_match_all('/<tr[^>]+align=["|\']?left["|\']?[^>]*>(.*)<\/tr>/Usi', $pagecontent, $outcontent);
и уже после разбирать строки. имхо
 
Тулзи для регулярних виразів

Може простому смертному важко будувати такі довгі регулярні вирази, для цього є купа тулзів. Наприклад в онлайні Для просмотра ссылки Войди или Зарегистрируйся
або

Для просмотра ссылки Войди или Зарегистрируйся
 
Sanuch, парсим как умеем :))) С регулярками я плохо знаком.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху