2011-04-24 90 views
1

我想操縱一個URL來獲取基本站點名稱。如何在Rails/Ruby中操作URL?

比如我的網址:

http://stackoverflow.com/questions/ask, 

這應該只是返回stackoverflow

另外,如果我有網址:

http://stackoverflow.com/questions/4988199/rails-3-mechanize-socketerror-getaddrinfo-host-or-name-not-known 

也應該只有stackoverflow

最後一個例子,如果我有網址:

http://www.google.dk/search?q=ruby+string+manipulation 

應該google

我該如何剝離一切,但一個URL的域名?

回答

2

可能最簡單的解決方案是使用Domainatrix寶石來爲你照顧這件事。一旦你安裝了它,它只是一個這樣做之事:

url = Domainatrix.parse("http://www.google.dk/search?q=ruby+string+manipulation") 
url.domain # returns 'google' 

有幾個代碼示例和選擇相應Github頁面上。

1

如果你不想使用一個單獨的寶石,你可以嘗試一些簡單的regex

(https?:\/\/)?(www\.)?([^\.]+).* 
+0

沒有寶石。 。 我喜歡 – baash05 2012-12-03 23:50:02

8

你可以使用在STD Ruby發行版已經提供的東西:

irb(main):001:0> require "uri" 
=> true 
irb(main):002:0> a = URI.parse("http://www.google.com") 
=> #<URI::HTTP:0x3b3eb78 URL:http://www.google.com> 
irb(main):003:0> a.host 
=> "www.google.com" 
irb(main):004:0>