Ruby имеет модуль URI , который является частью стандартного дистрибутива, плюс Addressable gem:
url = 'http://testasp.vulnweb.com/Templatize.asp?item=html/about.html'
require 'uri'
uri = URI.parse(url)
queries = Hash[uri.query.split('&').map{ |q| q.split('=') }]
puts queries['item']
require "addressable/uri"
uri = Addressable::URI.parse(url)
puts uri.query_values['item']
Оба будут выводить:
html/about.html
при запуске.
URI удобен, но Addressable очень мощный и полнофункциональный. Если мне нужно много разбирать или манипулировать URL-адресами, можно обратиться к Addressable.
Получив html/about.html
, вы можете извлечь расширение несколькими способами:
path = 'html/about.html'
path[/(\..+)$/, 1] # => ".html"
path.split('.').last # => "html"
File.extname(path) # => ".html"
Обратите внимание, что при использовании split
удаляется .
, поэтому его необходимо снова добавить к html
.