ウェブエンジニア珍道中

日々の技術的に関する経験を書いていきます、脱線もします。

RubyでURLをaタグに書き換える処理を書いた

DBから取ってきた文字列を表示する際に、URLが混ざっていた場合aタグに置き換えて表示する必要があったためその処理を書きました。

コードはこんな感じです。

require 'uri'

def convert_url_into_a_tag(text)
  text.gsub(URI.regexp(['http', 'https'])) do |text|
    "<a href='#{text}'>#{text}</a>"
  end
end


# 検証用の文字列作成
text = <<EOS
私のブログのURLは
http://www.te-nu.com/です!
もう一度いいます
http://www.te-nu.com/です!
EOS

# 実行した結果を表示
puts convert_url_into_a_tag(text)

実行結果

私のブログのURLは
<a href='http://www.te-nu.com/'>http://www.te-nu.com/</a>です!
もう一度いいます
<a href='http://www.te-nu.com/'>http://www.te-nu.com/</a>です!

ざっくり解説

String#gsubURI.regexpを組み合わせました。 URI.regexpでURLを抜き出すための正規表現を取得することができるので、あとは gsubメソッドで置換を行うことで上手くaタグに変換することができました。

Railsの場合は app/helpers/application_helper.rbあたりに定義して必要な場合に使ったりするといいんじゃないかなーと思います。