我想編寫一個小腳本來知道兩個URLS是否導向同一頁面。例如:http://google.com和http://google.com/#將導致相同的URL。有時http://URL1.com和http://URL2.com也會導致相同的頁面,雖然它們不是相同的URL。如何知道兩個URL是否導向同一頁面
有沒有簡單的方法來做到這一點?
如果您需要了解更多信息,請告訴我,我將編輯後
注意:這不是一門功課的問題,所以請你能一樣有用。
謝謝大家!
我想編寫一個小腳本來知道兩個URLS是否導向同一頁面。例如:http://google.com和http://google.com/#將導致相同的URL。有時http://URL1.com和http://URL2.com也會導致相同的頁面,雖然它們不是相同的URL。如何知道兩個URL是否導向同一頁面
有沒有簡單的方法來做到這一點?
如果您需要了解更多信息,請告訴我,我將編輯後
注意:這不是一門功課的問題,所以請你能一樣有用。
謝謝大家!
這是一個非常骯髒的方式,但我想這是你想要什麼:
if(file_get_contents('http://URL1.com') === file_get_contents('http://URL2.com')) {
// Leading to the same page!
}
注意,如果頁面是有細微的變化,如時間將無法正常工作(即請求恰好之間進行13:45:59和13:46:00),cookie或任何動態的東西。
我是否應該列舉所有可能失敗的方法? – 2010-02-08 04:38:49
不......因爲這個問題本身並不能真正解決...... – 2010-02-08 04:39:50
LiraNuna,我明白這不會一直工作,但非常感謝你試圖回答這個問題。 Chacha102,LiraNuna試圖提供一個答案,我真的很感激。我問這個問題是因爲我發現這是一個難題,所以我想我會在這裏看看來自人們的一些想法,謝謝你對這個問題的貢獻。 :) – user220755 2010-02-08 04:43:15
您可以使用parse_url()
來處理微不足道的情況。爲了檢測重定向,您必須使用HTTP facilities的其中一個部分來獲取標頭並檢測Location
標頭。
所以......
這可能是非常棘手的,因爲沒有「真正」的方式來檢測它。您可以檢測到一個位置標題以查看是否存在重定向,但這不是萬無一失的,因爲有些人會進行內部重定向。 (意思是,stackoverflow.com看起來一樣stackoverflow2.com。)
我能想到的唯一真正的方法是檢查頁面的內容:
AKA
$c = curl_init();
curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
curl_setopt($c, CURLOPT_URL, 'http://localhost/admin/');
$content1 = curl_exec($c);
curl_close($c);
$c = curl_init();
curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
curl_setopt($c, CURLOPT_URL, 'http://localhost/admin/');
$content2 = curl_exec($c);
curl_close($c);
if($content1 == $content2)
{
// same content
}
如果您想要,你可以縮短它只檢查內容長度或其他東西,但你不能簡單地從頭文件。
嗯告訴我們這是**不是**一個家庭作業的問題是讓我相信**是** ...整個'無故因爲防禦'的事... – 2010-02-08 04:29:18
如果你看着我所有的帖子你會明白,我作爲家庭作業問題標記作業問題,當他們不是我說的話:)所以,沒有它不是一個家庭問題,無論如何感謝您的評論! – user220755 2010-02-08 04:30:55