2012-09-05 46 views
5

tôi khai thác dữ liệu từ các liên kết rss và nhận được một loạt các url như:Lấy url, một url cho chuyển hướng đến

http://feedproxy.google.com/~r/electricpig/~3/qoF8XbocUbE/

.... và nếu tôi truy cập vào liên kết trong trình duyệt web của tôi, Tôi được chuyển hướng đến một cái gì đó như:

http://www.electricpig.co.uk/stuff.

Có cách nào trong php để viết một hàm, khi được cung cấp url "a" chuyển hướng người dùng đến url "b", trả lại cho bạn url "b"?

Trả lời

10

Ở đây bạn đi:

function getRedirect($oldUrl) { 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $oldUrl); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    $res = curl_exec($ch); 
    $newUrl = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL); 
    curl_close($ch); 
    return $newUrl; 
} 

Chức năng đòi hỏi cURL, và tận dụng CURLINO_EFFECTIVE_URL. Bạn có thể nhìn nó lên trên PHPDoc here

EDIT:

nếu bạn chắc chắn các OLDURL không chuyển hướng đến NEWURL qua javascript, sau đó bạn cũng có thể tránh lấy cơ thể của NEWURL sử dụng

curl_setopt($ch, CURLOPT_NOBODY, TRUE); // remove body 

Đặt dòng trên trước $res = curl_exec($ch); trong hàm getRedirect để thực hiện nhanh hơn.

1
public function getRedirect($url) { 
    $headers = get_headers($url, 1); 
    if (array_key_exists("Location", $headers)) { 
     $url = getRedirect($headers["Location"]); 
    } 
    return $url; 
} 
+0

Cảm ơn rất nhiều vì điều này. – fleurette

Các vấn đề liên quan