Как разобрать URL, чтобы получить базовый URL?- Рельсы 3.1 - PullRequest
11 голосов
/ 27 ноября 2011

Как я могу разобрать URL как

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

и только получите

http://www.1800contacts.com

PS. В некоторых URL есть субдомены и т. Д., Поэтому я не могу использовать регулярные выражения здесь.

Ответы [ 3 ]

22 голосов
/ 27 ноября 2011

Попробуйте использовать библиотеку '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 голос
/ 20 сентября 2018

Мне нравится ответ @ 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"
1 голос
/ 26 декабря 2013

2 альтернативных способа

uri = URI.parse(url); uri.path = ''; uri.query = nil; uri.to_s
url.split('/')[0,3].join('/')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...