给定一个URL,我怎样才能获得域名?

时间:2012-01-13 18:14:50

标签: ruby-on-rails ruby regex

给出以下网址:

http://online.wsj.com/
http://online.wsj.com/article/SB10001424052970204409004577158764211274708.html
http://www.techcrunch.com/2012/01/13/techcrunch-coo/

使用Ruby / Rails,我怎样才能返回域名?

online.wsj.com
online.wsj.com
techcrunch.com

没有协议,没有斜杠,只有子域,如果它不是www,域和ext?

4 个答案:

答案 0 :(得分:20)

使用Addressable :: URI.parse和#host实例方法:

Addressable::URI.parse("http://techcrunch.com/foo/bar").host #=> "techcrunch.com" 

答案 1 :(得分:14)

请注意,如果您的网址没有http://,则返回nil:

require 'uri'

url = "www.techcrunch.com/2012/01/13/techcrunch-coo/"

p URI.parse(url).host  # nil

所以这样的事情应该是一个更安全的解决方案:

require 'uri'

url = "www.techcrunch.com/2012/01/13/techcrunch-coo/"

url = 'http://' + url unless url.match(/^http:\/\//)

puts URI.parse(url).host

答案 2 :(得分:2)

pry(main)> require 'uri'
pry(main)> url = "http://www.techcrunch.com/2012/01/13/techcrunch-coo?param1=foo&param2=bar"
pry(main)> URI.parse(url).host
=> "www.techcrunch.com"

答案 3 :(得分:2)

>> require 'uri'
>> URI.parse("http://www.techcrunch.com/2012/01/13/techcrunch-coo/").host
=> "www.techcrunch.com"