7

クリーンアップしたいURLがたくさんあります。これらはすべてUTMパラメータを含んでいますが、この場合は不要であるか、むしろ有害です。例:

http://houseofbuttons.tumblr.com/post/22326009438?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+HouseOfButtons+%28House+of+Buttons%29

すべての潜在的なパラメータは。で始まりますutm_。他の潜在的な「適切な」URLパラメータを破壊することなく、rubyスクリプト/構造を使用してそれらを簡単に削除するにはどうすればよいですか?

4

2 に答える 2

12

URLに正規表現を適用してクリーンアップすることができます。このような何かがトリックを行う必要があります:

url = 'http://houseofbuttons.tumblr.com/post/22326009438?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+HouseOfButtons+%28House+of+Buttons%29&normal_param=1'
url.gsub(/&?utm_.+?(&|$)/, '') => "http://houseofbuttons.tumblr.com/post/22326009438?normal_param=1"
于 2012-10-10T15:01:06.083 に答える
11

これは、URI libを使用して、クエリ文字列を分解および変更します(正規表現なし)。

require 'uri'
str ='http://houseofbuttons.tumblr.com/post/22326009438?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+HouseOfButtons+%28House+of+Buttons%29&normal_param=1'

uri = URI.parse(str)
clean_key_vals = URI.decode_www_form(uri.query).reject{|k, _| k.start_with?('utm_')}
uri.query = URI.encode_www_form(clean_key_vals)
p uri.to_s #=> "http://houseofbuttons.tumblr.com/post/22326009438?normal_param=1"
于 2012-10-10T15:56:55.190 に答える