2016-04-02 28 views
-1

私はこれらのURLを持っている:URLエンコード

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 INGを行うには良い方法はありますか?

+0

車輪の再発明をしないでください。 – sawa

+0

@sawa私はあなたに同意しますが、私が "ホイールを再発明"しないと、毎回このプログラムが失敗することになります。 – 13aal

+0

私はあなたを得ない。あなたは答えを受け入れる場合、それは良いでしょう13aal @) – sawa

答えて

5

使用することはuri

require 'uri' 
URI.decode(your_url) 

これは、URIエンコーディングのすべてを置き換えます。

+0

... – 13aal

+0

を取得する必要が点在しています。 :)ありがとうございます。 ;) – Mark

+1

;大丈夫です –

1

問題は、URLに複数回エンコードされたクエリが含まれていることです。

エンコーディングは、かつてあなたがOKだが、あなたは複数の層を持っている場合、それは厄介得ることができます発生した場合:

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"} 
+0

さて、彼の答えはどのように私の質問ですか?デコードされたURLのハッシュがあれば、そこから何をするのですか? – 13aal

+0

あなたの前にドラゴンがいることを伝えて、質問に答えるのに役立ちます。あなたはページが複数のエンコードされたURLが含まれているか、あなたは元のURLに取得しようとしている場合は、レイヤーをバック剥離する必要がありますことを認識する必要があります。あなたのためにそれをやる方法はありません。彼らは最初のデコードを行うことができますが、さらにデコードが必要かどうかを知ることができなければなりません。反復的にデコードしてチェックする方法を理解することは難しくありません。 –

+0

それは私には意味がある、情報をありがとう。 – 13aal

関連する問題