Web + Life Hack

〜True But Useless〜

【ruby】URIparserを使わずにURLを分解する方法



今回は「日本語」が含まれるURLから

「日本語」の部分だけを抽出する

というなかなか無い仕様に遭遇したのでその時のロジックを
備忘録的にまとめたいと思います。

# 文字列(URLはダミー)
referer = "http://g08m11.hateblo.jp?q=グロースハック&l=沖縄"

# [?]部分の前後で分解
ref_hash = referer.split("?")


ref_hash[1].split("&").map { |v| v.split("=") }

key_value = Hash[ *ref_hash[1].split("&").map { |v| v.split("=") }.flatten ]
=> {"l"=>"沖縄", "q"=>"グロースハック"}


key_value['q']
=> "グロースハック"

key_value['l']
=> "沖縄"

flattenという見慣れないメソッドが肝。

flattenメソッドは、配列の配列を平坦化した新しい配列を返します。
配列中に含まれる配列からすべて要素を取り出して、親の配列の中に並べます。

http://ref.xaio.jp/ruby/classes/array/flatten