Forum Webscript.Ru

Программирование => PHP => Тема начата: UltraMax от 06 Июля 2006, 13:56:41

Название: Чем лучше всего парсить html файл?
Отправлено: UltraMax от 06 Июля 2006, 13:56:41
Есть в инете страница срезультатами поиска в виде html файла. Необходимо получить его, и обработать рещультаты.
Каким образом это лучше всего и правильнее сделать?
Название: Чем лучше всего парсить html файл?
Отправлено: CGVictor от 06 Июля 2006, 14:16:03
UltraMax

[p]preg_match[/p]
Название: Чем лучше всего парсить html файл?
Отправлено: UltraMax от 06 Июля 2006, 14:20:31
CGVictor
ну спасибо - подсказал. То что мне с регэкспами придется работать с полученным результатом это я и сам понял.
Неужели нет ничего специфического типа как xml parser функции? :(
Название: Чем лучше всего парсить html файл?
Отправлено: CGVictor от 06 Июля 2006, 16:10:13
UltraMax
А у тебя тот бардак в HTML, который надо парсить - что, соответсвует "специфическому типу"?
Всё индивидуально. Смотришь, что тебе понадобится из текста страницы, вырезаешь..
Название: Чем лучше всего парсить html файл?
Отправлено: UltraMax от 06 Июля 2006, 16:21:19
Я имел ввиду что-то типа этого
http://search.cpan.org/~msisk/HTML-TableExtract-2.09/lib/HTML/TableExtract.pm

Все ясно, придется делать на перле
Название: Чем лучше всего парсить html файл?
Отправлено: CGVictor от 06 Июля 2006, 16:29:41
UltraMax
А чем плох PHP?
Название: Чем лучше всего парсить html файл?
Отправлено: UltraMax от 06 Июля 2006, 16:45:58
CGVictor
такой модуль есть для php?

у меня есть таблица в html
мне надо ее распарссить, а не регэкспами биться головой об стенку
Название: Чем лучше всего парсить html файл?
Отправлено: CGVictor от 06 Июля 2006, 17:36:33
UltraMax
Эх.. вот молодежь пошла, в красивой задаче вызова не видят!..

Вот пример, навскидку.
[off]$text = "
El1El2El3
Elq1Elq3

someshit

dl1dl2dl3
dq1dq3
";

$tables = array();
preg_match_all("#]*)>(((?!]*)>).)*)#si",$text,$out);
for($i=0;$i  $tables[$i] = array();
  preg_match_all("#]*)>(((?!]*)>).)*)#si",$out[1][$i],$out2);
  for($j=0;$j    $tables[$i][$j] = array();
    preg_match_all("#]*)>(((?!]*)>).)*)#si",$out2[1][$j],$out3);
    for($k=0;$k      $tables[$i][$j][$k] = $out3[1][$k];
    }
  }
}
echo(htmlspecialchars(print_r($tables,true)));[/off]

10 минут работы по моим часам.

Доработать проверками на количество элементов, еще чего по вкусу добавить - и подойдет на ура.