Как манипулировать URL в Rails / Ruby? - PullRequest
1 голос
/ 24 апреля 2011

Я хочу манипулировать URL, чтобы получить только базовое имя сайта.

Например, у меня есть URL:

http://stackoverflow.com/questions/ask,

, который должен просто вернуть stackoverflow.

Также, если у меня есть URL:

/3882813/rails-3-mechanize-socketerror-getaddrinfo-host-ili-imya-neizvestno

это также должно быть только stackoverflow.

Последний пример, если у меня есть URL:

http://www.google.dk/search?q=ruby+string+manipulation

должно быть google.

Как мне убрать все, кроме доменного имени URL?

Ответы [ 3 ]

8 голосов
/ 24 апреля 2011

Вы можете использовать что-то уже доступное в дистрибутиве std Ruby:

irb(main):001:0> require "uri"
=> true
irb(main):002:0> a = URI.parse("http://www.google.com")
=> #<URI::HTTP:0x3b3eb78 URL:http://www.google.com>
irb(main):003:0> a.host
=> "www.google.com"
irb(main):004:0>
2 голосов
/ 24 апреля 2011

Вероятно, самым простым решением было бы использовать гем Domainatrix , чтобы позаботиться об этом за вас.После того, как вы его установили, это просто вопрос:

url = Domainatrix.parse("http://www.google.dk/search?q=ruby+string+manipulation")
url.domain # returns 'google'

На странице github есть еще несколько примеров и опций кода.

1 голос
/ 24 апреля 2011

Если вы не хотите использовать отдельный драгоценный камень, вы можете попробовать несколько простых регулярных выражений

(https?:\/\/)?(www\.)?([^\.]+).* 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...