file_get_contents () для коротких URL - PullRequest
6 голосов
/ 30 мая 2011

file_get_contents() не читает данные для коротких URL-адресов. Пример:

Пожалуйста, помогите мне разобраться с этим.ИЛИ Есть ли какая-либо функция CURL для обработки вышеуказанных ссылок?

Ответы [ 3 ]

7 голосов
/ 30 мая 2011

Это в целом работает нормально. Если вы обнаружите, что это не правильно, вы можете явно использовать контекст потока:

$url = "http://bit.ly/d00E2C";
$context = stream_context_create(array('http' => array('max_redirects' => 5)));
$val = file_get_contents($url, false, $context);

должен это сделать. Для этого не нужно прикасаться к CURL.

4 голосов
/ 30 мая 2011

На моей машине я не могу воспроизвести вашу проблему; Я получаю страницу, как задумано. Однако, если проблема связана с перенаправлением, это может решить вашу проблему.

<?php
$opts = array(
    'http' => array(
        'follow_location' => 1,
        'max_redirects' => 20
    )
);
$context = stream_context_create($opts);
echo file_get_contents('http://wp.me/pbZy8-1WM', false, $context);

Я предполагаю, что может быть директива, которая переключает перенаправление после, но я еще не нашел ее. Я буду редактировать свой ответ, если я.

1 голос
/ 30 мая 2011

То, что вы можете сделать, это использовать curl с CURLOPT_FOLLOWLOCATION, установленной в True:

$ch = curl_init("http://bit.ly/d00E2C");
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
$result = curl_exec($ch);
curl_close($ch);

echo $result;
...