Comment obtenir l'URL de redirection en PHP : 1. Utilisez la fonction get_headers pour l'obtenir, avec la syntaxe "get_headers($url, 1)" 2. Utilisez la fonction fsockopen() pour l'obtenir ; (), curl_setopt(), etc. fonction à obtenir.

L'environnement d'exploitation de ce tutoriel : système Windows 7, PHP version 7.1, ordinateur DELL G3
1 Utilisez la fonction get_headers
La fonction get_headers fournie avec PHP peut obtenir tous les en-têtes envoyés par le serveur en réponse à une requête HTTP, nous pouvons essayer d'utiliser cette fonction.
function get_redirect_url($url){ $header = get_headers($url, 1); if (strpos($header[0], ’301′) !== false || strpos($header[0], ’302′) !== false) { if(is_array($header['Location'])) { return $header['Location'][count($header['Location'])-1]; }else{ return $header['Location']; } }else { return $url; } }
2. Utilisez la fonction intégrée fsockopen()
function get_redirect_url($url){ $redirect_url = false; $url_parts = @parse_url($url); if (!$url_parts) return false; if (!isset($url_parts['host'])) return false; if (!isset($url_parts['path'])) $url_parts['path'] = ‘/’; $sock = fsockopen($url_parts['host'], (isset($url_parts['port']) ? (int)$url_parts['port'] : 80), $errno, $errstr, 30); if (!$sock) return false; $request = “HEAD ” . $url_parts['path'] . (isset($url_parts['query']) ? ‘?’.$url_parts['query'] : ”) . ” HTTP/1.1\r\n”; $request .= ‘Host: ‘ . $url_parts['host'] . “\r\n”; $request .= “Connection: Close\r\n\r\n”; fwrite($sock, $request); $response = ”; while(!feof($sock)) $response .= fread($sock, 8192); fclose($sock); if (preg_match(‘/^Location: (.+?)$/m’, $response, $matches)){ return trim($matches[1]); } else { return false; } }
3. Utilisez la fonction cURL
function get_redirect_url($url, $referer=”, $timeout = 10) { $redirect_url = false; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, TRUE); curl_setopt($ch, CURLOPT_NOBODY, TRUE);//不返回请求体内容 curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);//允许请求的链接跳转 curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); curl_setopt($ch, CURLOPT_HTTPHEADER, array( ‘Accept: */*’, ‘User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)’, ‘Connection: Keep-Alive’)); if ($referer) { curl_setopt($ch, CURLOPT_REFERER, $referer);//设置referer } $content = curl_exec($ch); if(!curl_errno($ch)) { $redirect_url = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);//获取最终请求的url地址 } return $redirect_url; }
Apprentissage recommandé : "Tutoriel vidéo PHP"
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!
Comment ouvrir le fichier php
Comment supprimer les premiers éléments d'un tableau en php
Que faire si la désérialisation php échoue
Comment connecter PHP à la base de données mssql
Comment connecter PHP à la base de données mssql
Comment télécharger du HTML
Comment résoudre les caractères tronqués en PHP
Comment ouvrir des fichiers php sur un téléphone mobile