Как получить перенаправяемую ссылку

206
14 декабря 2017, 00:19

В твиттере ссылки имеют такой вид https://t.co/Lh2VMRvfqq. Как в php получить ссылку, на которую ведет эта ссылка?

Answer 1

Если вы хотите это сделать с помощью функции file_get_contents то нужно указать параметры в контексте чтобы не было перенаправления, получить headers и найти нужный вам.

Сначала получим всем headers:

$context = stream_context_create(
    array(
        'http' => array(
            'follow_location' => false
        )
    )
);
file_get_contents('https://t.co/Sgw7gx9XUv', false, $context);

В итоге мы получим в зарезервированную переменную $http_response_header все headers.

Дальше проходимся по ним и находим тот что нам нужен:

$url = null;
foreach ($http_response_header as $header) {
    if (strpos($header, 'location: ') === false) {
        continue;
    }
    $url = substr($header, strpos($header, 'http'));
}
echo $url;

В итоге в переменной $url и будет оригинальный путь.

READ ALSO
Помогите с прокси Nginx для WebSocket

Помогите с прокси Nginx для WebSocket

Нужна помощь с настройкой конфигураций

302
Ошибка при переименовании директории

Ошибка при переименовании директории

Добрый деньПомогите пожалуйста

223
Парсер PHP, как обойти загрузку? [требует правки]

Парсер PHP, как обойти загрузку? [требует правки]

Здравствуйте, мне нужно парсить сайт https://stepikorg/catalog но когда ты заходишь на неё у тебя начинается загрузка данных на сайт и из-за этого не могу...

197