Heim  >  Artikel  >  Backend-Entwicklung  >  Wie bekomme ich die URL nach dem Sprung in PHP?

Wie bekomme ich die URL nach dem Sprung in PHP?

青灯夜游
青灯夜游Original
2020-11-06 11:56:563486Durchsuche

So erhalten Sie die Sprung-URL in PHP: 1. Verwenden Sie die Funktion get_headers, um die URL nach dem Sprung abzurufen. Diese Funktion kann alle vom Server als Antwort auf eine HTTP-Anfrage gesendeten Header abrufen. 2. Verwenden Sie fsockopen(). Funktion; 3. Verwenden Sie die cURL-Funktion.

Wie bekomme ich die URL nach dem Sprung in PHP?

Empfehlung: „PHP-Video-Tutorial

Manchmal stoßen wir während der Entwicklung häufig auf die URL 301 oder 302. Nach der Umleitung müssen wir möglicherweise die URL abrufen Erhalten Sie die Weiterleitungs-URL:

1. Verwenden Sie die Funktion get_headers.

phps eigene Funktion get_headers kann alle vom Server als Antwort auf eine HTTP-Anfrage gesendeten Header abrufen.

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. Verwenden Sie die integrierte Funktion 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. Verwenden Sie die cURL-Funktion

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;
}

Welche Methode ist effektiver?

Weitere Kenntnisse zum Thema Programmierung finden Sie unter: Einführung in die Programmierung! !

Das obige ist der detaillierte Inhalt vonWie bekomme ich die URL nach dem Sprung in PHP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn