Есть небольшой скрипт, который стаскивает страницу:
<?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 строк, чтобы ее получить.
Спустя 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](http://phpforum.ru/html/emoticons/unsure.gif)
Спустя 7 минут, 44 секунды (10.12.2011 - 21:06) Игорь_Vasinsky написал(а):
оффтоп
Свернутый текст
ба.. тут парсеры разгребают..а я не сном не духом
![biggrin.gif](http://phpforum.ru/html/emoticons/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"); |
У меня вот вопрос: регулярное выражение '#<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 написал(а):
Ладно, спасибо всем за помощь