URLを自動判別して、Aタグのリンクにするメソッド

文字列にURLが含まれていた場合、自動的にリンクにしたいですよね。

require 'uri'
def url2link_of_string(html_string,options={})
  target=options[:target] || '_blank'
  URI.extract(html_string).each{|url|
    html_string.gsub!(url,"<a href='#{url}' target='#{target}'>#{url}</a>")
  }
  html_string
end

使ってみる。オプションでtargetを取ることが出来る。
なんとデフォルトは_blankで。だって、こっちのほうが多用するでしょ。

html_string="テストテストhttp://foo.bar/show/1実験実験\n事件http://www.yahoo.co.jp実験"
puts url2link_of_string(html_string,:target=>"_self")

結果は

テストテスト<a href='http://foo.bar/show/1' target='_self'>http://foo.bar/show/1</a>実験実験
事件<a href='http://www.yahoo.co.jp' target='_self'>http://www.yahoo.co.jp</a>実験

いい感じ。