2013-11-04 78 views
1

假設我有兩個網址:比較網址

http://foo.com/homepage.html

https://foo.com/homepage.html?ref=topnav&bar=1

有沒有簡單的方法(或一些簡單的外部庫),我可以用它來檢查如果兩個URL是相同的EXCLUDING HTTP/HTTPS和EXCLUDING任何參數?

例如,上述兩個網址是相同的。

+0

應用正則表達式可以輕鬆解決您的問題。 '。*://(。*?)/'應該能夠獲取基本網址。可能還有一個ruby庫來提取基準網址。 – JDong

回答

3

您可以使用URI和比較路徑:

require 'uri' 

uri = URI("https://foo.com/homepage.html/ref=topnav?bar=1") 
#=> #<URI::HTTP:0x00000000b14880 
     https://foo.com/homepage.html/ref=topnav?bar=1> 

uri.path 
#=> "/homepage.html" 

uri.host 
#=> "foo.com" 

上有URI其他方法以不同的方式來分解一個URI。所以你可以根據你想要的方式編寫一個方法進行比較。

+0

我同意。比較路徑將是檢查這一點的好方法。 –

+0

這與我所需要的非常接近,但是uri.path似乎保留了/ ref = topnav部分......有沒有辦法擺脫這一點? – Nosrettap

+0

@Nosrettap,/ ref = topnav是路徑的一部分,而不是參數。如果你想剝去它,你需要一些自定義編碼,例如如果它符合該模式,則剝離uri的末端。 – Mori