如何解析网址以获取基本网址? - Rails 3.1

时间:2011-11-27 18:56:20

标签: ruby-on-rails ruby ruby-on-rails-3.1

如何解析像

这样的网址

http://www.1800contacts.com/productlist.aspx?dl=P&source=cj&ac=8.2.0007

并且只获得

http://www.1800contacts.com

PS。有些网址有子域名等,所以我不能在这里使用正则表达式。

3 个答案:

答案 0 :(得分:22)

尝试使用' uri'库:

require 'uri'
address = 'http://www.1800contacts.com/productlist.aspx?dl=P&source=cj&ac=8.2.0007'
uri = URI.parse(address)
puts "#{uri.scheme}://#{uri.host}"  # => http://www.1800contacts.com

答案 1 :(得分:1)

2种替代方式

uri = URI.parse(url); uri.path = ''; uri.query = nil; uri.to_s
url.split('/')[0,3].join('/')

答案 2 :(得分:1)

我喜欢@skojin的答案1(很抱歉,我打开了另一个答案,这只是一个很长的评论),因为它在两种情况下都提供了更通用的代码:

require 'uri'

uri = URI "http://www.1800contacts.com/productlist.aspx?dl=P&source=cj&ac=8.2.0007"
uri.query = uri.fragment = nil
uri.path = ""
uri.to_s
# => "http://www.1800contacts.com"

uri = URI "http://example.com:8080/you-found-me.php"
uri.query = uri.fragment = nil
uri.path = ""
uri.to_s
# => "http://example.com:8080"