2010-02-08 60 views
1

我想編寫一個小腳本來知道兩個URLS是否導向同一頁面。例如:http://google.comhttp://google.com/#將導致相同的URL。有時http://URL1.comhttp://URL2.com也會導致相同的頁面,雖然它們不是相同的URL。如何知道兩個URL是否導向同一頁面

有沒有簡單的方法來做到這一點?

如果您需要了解更多信息,請告訴我,我將編輯後

注意:這不是一門功課的問題,所以請你能一樣有用。

謝謝大家!

+2

嗯告訴我們這是**不是**一個家庭作業的問題是讓我相信**是** ...整個'無故因爲防禦'的事... – 2010-02-08 04:29:18

+1

如果你看着我所有的帖子你會明白,我作爲家庭作業問題標記作業問題,當他們不是我說的話:)所以,沒有它不是一個家庭問題,無論如何感謝您的評論! – user220755 2010-02-08 04:30:55

回答

4

這是一個非常骯髒的方式,但我想這是你想要什麼:

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或任何動態的東西。

+2

我是否應該列舉所有可能失敗的方法? – 2010-02-08 04:38:49

+3

不......因爲這個問題本身並不能真正解決...... – 2010-02-08 04:39:50

+0

LiraNuna,我明白這不會一直工作,但非常感謝你試圖回答這個問題。 Chacha102,LiraNuna試圖提供一個答案,我真的很感激。我問這個問題是因爲我發現這是一個難題,所以我想我會在這裏看看來自人們的一些想法,謝謝你對這個問題的貢獻。 :) – user220755 2010-02-08 04:43:15

0

您可以使用parse_url()來處理微不足道的情況。爲了檢測重定向,您必須使用HTTP facilities的其中一個部分來獲取標頭並檢測Location標頭。

2

所以......

這可能是非常棘手的,因爲沒有「真正」的方式來檢測它。您可以檢測到一個位置標題以查看是否存在重定向,但這不是萬無一失的,因爲有些人會進行內部重定向。 (意思是,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 
} 

如果您想要,你可以縮短它只檢查內容長度或其他東西,但你不能簡單地從頭文件。

相關問題