[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Парсер контента
xUnicornx
Добрый вечер всем, я начинающий программист, так что прошу сильно не пинать.
Есть небольшой скрипт, который стаскивает страницу:


<?php

$url = "http://horses.sportinglife.com/Racecards/0,12495,474264,00.html";
$parse_url = file($url);
$tmp = 0;

foreach($parse_url as $k => $v){
if( stristr( $v, "<table class=\"racecard_table\" name=\"racecardtable\" width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"2\">" )){
$tmp = $k;
break;
}
}


foreach($parse_url as $k => $v){
if( $k >= $tmp ){
if( stristr( $v, "</table>" )); // false and exit from script
break;
echo $v;
}
}

?>


но на определенном уровне скрипт слетает, немогу понять почему.
Может кто подскажет?



Спустя 1 минута, 25 секунд (10.12.2011 - 20:36) Winston написал(а):
Что значит "слетает" ?

Спустя 6 минут (10.12.2011 - 20:42) xUnicornx написал(а):
На этом условии " if( stristr( $v, "</table>" )); " при переменной $v которая не равна "</table>" скрипт идет дальше и выполняет команду "break;" . Не могу понять почему?

Спустя 4 минуты, 20 секунд (10.12.2011 - 20:46) Winston написал(а):
А что тебе спарсить нужно ?

Спустя 1 минута, 16 секунд (10.12.2011 - 20:47) xUnicornx написал(а):
парситься страница сайта и выводиться таблица с сайта

Спустя 4 минуты, 17 секунд (10.12.2011 - 20:51) Winston написал(а):
Тебе только эту таблицу нужно получить ?



Спустя 1 минута, 5 секунд Winston написал(а):
Достаточно 2 строк, чтобы ее получить.
$page = file_get_contents("http://horses.sportinglife.com/Racecards/0,12495,474264,00.html");
preg_match_all('#<table class="racecard_table" name="racecardtable" width="100%" border="0" cellspacing="0" cellpadding="2">(.*)</table>#is', $page, $match);
echo '<pre>'.htmlspecialchars(print_r($match, 1)).'</pre>';

Спустя 6 минут, 45 секунд (10.12.2011 - 20:58) xUnicornx написал(а):
Хм.. unsure.gif Спасибо за реализацию

Спустя 7 минут, 44 секунды (10.12.2011 - 21:06) Игорь_Vasinsky написал(а):
оффтоп
Свернутый текст
ба.. тут парсеры разгребают..а я не сном не духом biggrin.gif

Спустя 1 день, 17 часов, 25 минут, 25 секунд (12.12.2011 - 14:31) xUnicornx написал(а):
Цитата (Winston @ 10.12.2011 - 17:51)
Тебе только эту таблицу нужно получить ?



Спустя 1 минута, 5 секунд Winston написал(а):
Достаточно 2 строк, чтобы ее получить.
$page = file_get_contents("http://horses.sportinglife.com/Racecards/0,12495,474264,00.html");
preg_match_all('#<table class="racecard_table" name="racecardtable" width="100%" border="0" cellspacing="0" cellpadding="2">(.*)</table>#is', $page, $match);
echo '<pre>'.htmlspecialchars(print_r($match, 1)).'</pre>';

У меня вот вопрос: регулярное выражение '#<table class="racecard_table" name="racecardtable" width="100%" border="0" cellspacing="0" cellpadding="2">(.*)</table>#is' по каком принципу работает? Оно (выражение) выбирает любое количество символов между тегами <table...></table>, и насколько я понимаю оно работает(должно) до первого вхождения </table>. Так почему оно выбирает до третьего вхождения </table>?

Спустя 25 минут, 14 секунд (12.12.2011 - 14:57) Winston написал(а):
Цитата (xUnicornx @ 12.12.2011 - 13:31)
Оно (выражение) выбирает любое количество символов между тегами <table...></table>, и насколько я понимаю оно работает(должно) до первого вхождения </table>.

Да, верно.
Цитата (xUnicornx @ 12.12.2011 - 13:31)
Так почему оно выбирает до третьего вхождения </table>?

После двух модификаторов is. Добавь еще один U, он убирает жадность, теперь регулярка будет забирать все до первого вхождения </table>

Спустя 1 час, 5 минут, 16 секунд (12.12.2011 - 16:02) xUnicornx написал(а):
сенкс

Спустя 17 часов, 43 минуты, 51 секунда (13.12.2011 - 09:46) xUnicornx написал(а):
Ладно, спасибо всем за помощь
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.