Проблема с функцией file_get_contents() PHP

R
На сайте с 30.11.2010
Offline
1
3237

Здравствуйте столкнулся с такой проблемой!!!!!

зарегился в Яндекс XML

делаю такой запрос:

<?php

//запрос в яндекс со словом "79032057641"

$url = 'http://xmlsearch.yandex.ru/xmlsearch?query="79032057641"&groupby=attr%3Dd.mode%3Ddeep.groups-on-page%3D10.docs-in-group%3D1';

//получение результата запроса

$content = file_get_contents($url);

//поиск ссылки на страницу, (на так называемую сохраненную в яндексе копию страницы)

preg_match_all("|(?<=<saved-copy-url>).+(?=</saved-copy-url>)|s", $content, $copy_url);

$url2 = $copy_url[0][0];

//вывод на экран найденной ссылки (для проверки)

echo '<b>ССЫЛКА НА КОПИЮ</b> '.$url2.'<br><br>';

//получение содержимого из ссылки на копию

$content2 = file_get_contents($url2);

//вывод на экран полученного содержимого

echo '<b>СОДЕРЖИМОЕ</b> '.$content2;

?>

Трабл в следующем:

ссылка на копию находится и на экран выводится нормально. И имеет следующий вид:

"http://hghltd.yandex.net/yandbtm?fmode=inject&url=http%3A%2F%2FReSells.ru%2F%3Fx%3Dview%26id%3D271&text=%2279032057641%22&l10n=ru&sign=718555989e4dd03c850cb5e728b734e8&keyno=0"

Но когда выполняется функция " $content2 = file_get_contents($url2); " переменная $content2 оказывается пустой и на экран ничего не выводится (кроме переменной $url2)

А если присвоить переменной $url2 найденную ссылку на копию, то есть написать такой код:

<?php

$url2 = "http://hghltd.yandex.net/yandbtm?fmode=inject&url=http%3A%2F%2FReSells.ru%2F%3Fx%3Dview%26id%3D271&text=%2279032057641%22&l10n=ru&sign=718555989e4dd03c850cb5e728b734e8&keyno=0";

$content2 = file_get_contents($url2);

?>

тогда $content2 уже будет иметь содержимое и на экран выводится страница!

хотя раньше весь этот код работал!!!

В чем может быть проблема!?

Ragnarok
На сайте с 25.06.2010
Offline
239
#1

в переменной $copy_url[0][0]; нет значения?

//TODO: перестать откладывать на потом
PavelWershinin
На сайте с 23.10.2010
Offline
9
#2

Я конечно могу ошибаться, у меня уже раннее утро и мозг нифига не работает, но помоему вам надо строчку $url2 = $copy_url[0][0]; заменить на $url2 = $copy_url[0][1];

XR.CMS - система управления сайтами (https://xr-cms.ru)
F
На сайте с 12.09.2003
Offline
120
#3

это на твоем хосте - хост http://hghltd.yandex.net может не ресолвится.

то есть тупо не доступен. бывает при смене айпишников, переносе сервака или еще какой хрени

Faster добавил 07.12.2010 в 02:23

можно зайти через ssh и сделать traceroute hghltd.yandex.net

R
На сайте с 30.11.2010
Offline
1
#4
Ragnarok:
в переменной $copy_url[0][0]; нет значения?

Есть и оно равно "http://hghltd.yandex.net/yandbtm?fmode=inject&url=http%3A%2F%2FReSells.ru%2F%3Fx%3Dview%26id%3D271&text=%2279032057641%22&l10n=ru&sign=718555989e4dd03c850cb5e728b734e8&keyno=0"

rustyle добавил 08.12.2010 в 01:52

Как я понял у меня проблема в том что в $url2 помещается ссылка в каком то необычном формате и из-за этого функция file_get_contents не срабатывает

//получение содержимого из ссылки на копию

$content2 = file_get_contents($url2);

//вывод на экран полученного содержимого ничего не дает

echo '<b>СОДЕРЖИМОЕ</b> '.$content2;

но если вывести на экран echo $url2; на экран выводится эта ссылка: "http://hghltd.yandex.net/yandbtm?fmode=inject&url=http%3A%2F%2FReSells.ru%2F%3Fx%3Dview%26id%3D271&text=%2279032057641%22&l10n=ru&sign=718555989e4dd03c850cb5e728b734e8&keyno=0" (без кавычек)

И если её в браузере выделить скопировать и в коде вручную присвоить переменой $url2, тогда все работает

например я пишу такой код

<?php

$url2 = "http://hghltd.yandex.net/yandbtm?fmode=inject&url=http%3A%2F%2FReSells.ru%2F%3Fx%3Dview%26id%3D271&text=%2279032057641%22&l10n=ru&sign=718555989e4dd03c850cb5e728b734e8&keyno=0";

//получение содержимого из ссылки на копию

$content2 = file_get_contents($url2);

//вывод на экран полученного содержимого

echo '<b>СОДЕРЖИМОЕ</b> '.$content2;

?>

тогда функция file_get_contents($url2);срабатывает и все выводится

подозрение что в значении $url2 ссылка не такая, какая выводится на экран , может $url2 надо обработать специальной функцией которая преобразовывает ссылки? например эту часть ссылки http%3A%2F%2FReSells.ru в такой вид http://ReSells.ru

LEOnidUKG
На сайте с 25.11.2006
Offline
1774
#5
rustyle:

подозрение что в значении $url2 ссылка не такая, какая выводится на экран , может $url2 надо обработать специальной функцией которая преобразовывает ссылки? например эту часть ссылки http%3A%2F%2FReSells.ru в такой вид http://ReSells.ru

Функция rawurlencode

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий