ruby-on-rails 如何解析url得到基url?--Rails3.1

smdncfj3  于 2023-01-06  发布在  Ruby
关注(0)|答案(4)|浏览(113)

我如何解析url
第一个月
只会得到
http://www.1800contacts.com

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

ie3xauqp

ie3xauqp1#

尝试使用“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
ccrfmcuu

ccrfmcuu2#

我喜欢@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"
2hh7jdfx

2hh7jdfx3#

2种替代方法

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

bjg7j2ky4#

url = 'http://www.1800contacts.com/productlist.aspx?dl=P&source=cj&ac=8.2.0007'
Addressable::URI.heuristic_parse(url).origin => 'http://www.1800contacts.com'

相关问题