Парсер

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

Panzers^)

Постоялец
Регистрация
7 Окт 2007
Сообщения
69
Реакции
0
Вроде как..
Есть страничка, вывожу ее значит к себе через функцию file_get_contents(); но с этой странички мне нужна только одна таблица с содержанием, остальное не нужно, пытаюсь эту таблицу вывести функцией preg_match_all(); но я не понимаю как, я смотрел несколько скриптов парсинга, по аналогии делал, но получалось либо вывести заголовок, либо ничего. Надо сделать парс по определенным тегам парным, т.е. есть таблица <table ></table > и вот ее вывести с содержанием, а определить какую именно таблицу - это по классу сделать, например:
Код:
<table class=\"petya\">content</table >
<table class=\"vasya\">content</table >

и вот вывести только таблицу с классом "петя"..вот этого я не понимаю как сделать..Точнее какой нужен шаблон для функции, может поможете?
 
Примерно что-такого
$s=file_get_contents('aaa.html');
preg_match_all('|(<table class=\\"petya\\">.+?</table >)|Us',$s,$table);
 
И все равно не хочет(
Показывает "Array" и все..
 
Конечно будет Array возвращать. Сделайте ему

var_dump($table) и посмотрите, из каких элементов этого массива надо взять значение.

Я бы добавил в preg_match_all в конец еще аргумент PREG_SET_ORDER.
 
var_dump - array(1) { [0]=> array(0) { } }
Значит не захватилось или что?
 
  • Заблокирован
  • #6
Да.
Может у тебя не
Код:
<table class=\"vasya\">content</table >

а

Код:
<table class="vasya">content</table >

???

можно вообще проще:
PHP:
$s=file_get_contents('aaa.html');
$class = '"petya"';
preg_match_all('|(<table class='.preg_quote($class).'>.+?</table >)|Uis',$s,$table);
 
Хм, а чем проще будет если класс будет в переменной?
Угу, это
Код:
<table class="vasya">content</table >
Но нужно экранировать двойные ковычки, вот слэши и стоят..

Добавлено через 1 минуту
Все, сори) Не заметил что там preg_quote...

Добавлено через 18 минут
Во! Вроде получилось) Кстати, а почему не получается вывести хтмл страничку через file_get_contents ?
пишу:
PHP:
$hit = file_get_contents('http://IP:8000/index.html');
в ответ получаю:
Warning: file_get_contents(Для просмотра ссылки Войди или Зарегистрируйся) [function.file-get-contents]: failed to open stream: HTTP request failed! ICY 404 Resource Not Found in Q:\home\localhost\www\test.php on line 2
 
А вот как раз таки в браузере все нормально, можно как то поправить? Или может как то по другому?
 
У вас, случайно, не стоят в .htaccess ModRewrite редиректы (для ЧПУ, например)?
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху