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

给定的URL如下:

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?

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

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

请注意,如果您的url没有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 
 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" 
 >> require 'uri' >> URI.parse("http://www.techcrunch.com/2012/01/13/techcrunch-coo/").host => "www.techcrunch.com"