2013-01-18 56 views
6

如果我有一個網址:在Ruby中解析URL以獲取沒有「www」的子域或主域?

http://www.example.com/page 

我想解釋的是到:

example.com 

但是,如果我有:

http://blog.example.com/page 

我想找回:

blog.example.com 

這很難嗎?

+0

請注意,對於給定域,「www.example.com」不一定等同於「example.com」。 (在實踐中,這不僅僅在理論上是如此。) –

+0

生成的域不會用於顯示以外的其他任何內容,但是感謝提示 – Alfo

回答

11

使用Ruby的URI模塊:

require 'uri' 
URI.parse('http://www.example.com/page').host 
=> "www.example.com" 
URI.parse('http://blog.example.com/page').host 
=> "blog.example.com" 

在這兩種情況下,URI提取整個主機名,因爲有選擇地剝離從域名主機是沒有意義的。

你必須單獨實現這一邏輯,使用類似:

%w[http://www.example.com/page http://blog.example.com/page].each do |u| 
    puts URI.parse(u).host.sub(/^www\./, '') 
end 

,輸出:

example.com 
blog.example.com 
0

您可以使用URI class;例如:

require 'uri' 
uri1 = URI.parse("http://www.example.com/page") 
puts uri1.host.gsub(/www\./i, "") #This will print example.com 
uri2 = URI.parse("http://blog.example.com/page") 
puts uri2.host #This prints blog.example.com 

gsub將簡單地取代"www",不區分大小寫,用於""

+2

'.gsub(/ www \ ./ i,「」 )'也會輸出''foowww.com'.gsub(/ www \。/ i,「」) =>「foocom」 –

相關問題