[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: curl и регулярные выражения
l@pteff
привет всем, пытаю вытащить новостные ссылки со спортбокса, но почему-то открывается страница целиком, вот код:


<div style="overflow:auto">
<script
language="php">
$curl=curl_init("http://www.sportbox.ru");
$proxy='us:psw@IP:port';

curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($curl, CURLOPT_PROXY, $proxy);

$content=curl_exec($curl);

preg_match_all('#<h3><a href(.*)>(.*)</a></h3>#siU', $content, $titles);
foreach ($titles[2] as $title)
echo "<b>$title</b><br>";

curl_close($content);
</script>
</div>



со страницами с этого же сайта регулярка работает, а из удалённых страниц заголовки не вытаскивает. Из-за чего это может быть?



Спустя 2 часа, 51 минута, 24 секунды (3.03.2011 - 22:57) l@pteff написал(а):
народ, ну попробуйте у себя такой код... без прокси выдаёт тоже самое (полностью страницу сайта):

 
<div style="overflow:auto">
<script
language="php">
$curl=curl_init("http://www.sportbox.ru");

curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);

$content=curl_exec($curl);

preg_match_all('#<h3><a href(.*)>(.*)</a></h3>#siU', $content, $titles);
foreach ($titles[2] as $title)
echo "<b>$title</b><br>";

curl_close($content);
</script>
</div>



если попробовать открыть через file_get_contents() выдаёт:
Цитата

Warning: file_get_contents(http://www.sportbox.ru) [function.file-get-contents]: failed to open stream: HTTP request failed! in E:\my_projects\site.local\www\php\news.php  on line 5

Спустя 16 часов, 13 минут, 16 секунд (4.03.2011 - 15:10) l@pteff написал(а):
ни у кого не возникала такая проблема? как ни менял регулярку -не помогло wink.gif

Спустя 6 минут, 43 секунды (4.03.2011 - 15:17) DedMorozzz написал(а):
Всё работает и без прокси:
$b = file_get_contents('http://www.sportbox.ru');
preg_match_all('#<h4>.*?</h4>#',$b,$mathes);
echo "<pre>";
print_r($mathes);
echo "</pre>";

Спустя 18 минут, 49 секунд (4.03.2011 - 15:36) Trianon написал(а):
Цитата
preg_match_all('#<h3><a href(.*)>(.*)</a></h3>#siU', $content, $titles);

аккуратнее надо с захватом такими шаблонами.
Он же а) неоднозначный и б) жадный.

Сравните:

preg_match_all('#<h3><a href([^>]+)>([^<]+)<#siU', $content, $titles);


UPd. впрочем, насчет жадности я может и погорячился.

Спустя 36 минут, 4 секунды (4.03.2011 - 16:12) l@pteff написал(а):
DedMorozzz,
без прокси пишет:

Цитата

Warning: file_get_contents(http://www.sportbox.ru) [function.file-get-contents]: failed to open stream: HTTP request failed! in E:\my_projects\site.local\www\php\news.php  on line 5


а через curl() открывает станицу целиком не обращая внимания на регулярку. даже не знаю что и думать...

Спустя 22 минуты, 43 секунды (4.03.2011 - 16:34) l@pteff написал(а):
Trianon, код конечно жадный, но это не окончательный вариант.
Быстрый ответ:

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