URL编码回到真实的URL

时间:2016-04-02 18:02:46

标签: ruby gsub

我有这些网址:

http://www.jobbsafari.se/jobbsoekning?q=trainers.php%253Fid%253D'%2Band''
http://www.jobbsafari.se/jobbsoekning?q=trainers.php?id%253D%2Band'
http://tay-sen.com.ua/trainers.php?id=12%26action=show_photos%26m_lang_id=9'

我需要将它们编码回真正的URL。现在我正在使用:

string = ARGV[0]
string.gsub("%25", '%').gsub("%53", "S").gsub(etc..)

有没有更好的方法可以执行多个gsub而无需执行.gsub.gsub.gsub

2 个答案:

答案 0 :(得分:5)

使用uri

require 'uri'
URI.decode(your_url)

它将替换所有URI编码。

答案 1 :(得分:1)

问题是您的网址包含多次编码的查询。

如果编码发生一旦你没有,但是当你有多个图层时,它会变得混乱:

require 'uri'

uri = URI.parse("http://tay-sen.com.ua/trainers.php?id=12%26action=show_photos%26m_lang_id=9")
query = URI.decode_www_form(uri.query).to_h
query  # => {"id"=>"12&action=show_photos&m_lang_id=9"}

URI.decode_www_form(query['id']).to_h
# => {"12"=>"", "action"=>"show_photos", "m_lang_id"=>"9"}