Я хотел бы получить URL перенаправления, используя cURL
в PHP.
Код, который я сейчас использую:
public function request($uri = null)
{
$redirects = 0;
if ($uri === null) {
$uri = $this->getUri();
}
while ($redirects < $this->options['maxredirects']) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $uri);
curl_setopt($ch, CURLOPT_USERAGENT, $this->options['useragent']);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, $this->options['timeout']);
$result = curl_exec($ch);
$info = curl_getinfo($ch);
$this->addResult($result, $info);
if (floor($info['http_code'] / 100) != 3) {
return null;
}
$redirects++;
}
}
Я не знаю, что использовать CURLOPT_FOLLOWLOCATION
, потому что (поправьте меня, если ошибаюсь), это автоматически следует за перенаправлением.
Я надеялся, что это было бы в curl_getinfo()
, но это не так. Похоже, мне нужно включить CURLOPT_HEADER
и проанализировать заголовок, чтобы получить следующий URL.
- Это правильно?
- Если "Да", как я смогу разобрать заголовок? Например. могу ли я безопасно
explode()
строку \n
и найти элемент, который начинается с Location:
?