自动链接html字符串中的URL和图像

Luc*_*oli 6 ruby regex ruby-on-rails

嗨,我有一个像这样的字符串:

"<p class='video'>http://vimeo/2342343</p><p class='image'>http://nerto.it/logo.png</p><p class='text'>try to write</p><p class='video'>http://vimeo/2234923</p>"
Run Code Online (Sandbox Code Playgroud)

我必须在这样的字符串中转换它:

"<p class='video'><a href='http://vimeo/2342343'>http://vimeo/2342343</a></p><p class='image'><img src='http://nerto.it/logo.png' /></p><p class='text'>try to write</p><p class='video'><a href='http://vimeo/2234923'>http://vimeo/2234923</a></p>"
Run Code Online (Sandbox Code Playgroud)

那我怎么能得到每一个元素并改变它?

谢谢

Pan*_*kos 6

您可以使用自动链接功能将链接转换为实际的锚标记.

auto_link(text_to_convert)

*注意:不推荐使用或移动方法此方法已弃用或在最新的稳定版本上移动.最后一个现有版本(v3.0.9)显示在链接中.

如果您有更具体的用例,您可能希望将gsub与正则表达式一起使用.例如:

text.gsub(/\<p\s+class=\'image\'\>(.*?)\<\/p\>/, "<p class='image'><img src='\\1' /></p>")


Phr*_*ogz 5

html = "<p class='video'>http://vimeo/2342343</p>
        <p class='image'>http://nerto.it/logo.png</p>
        <p class='text'>try to write</p>
        <p class='video'>http://vimeo/2234923</p>"

linked = html.gsub( %r{http://[^\s<]+} ) do |url|
  if url[/(?:png|jpe?g|gif|svg)$/]
    "<img src='#{url}' />"
  else
    "<a href='#{url}'>#{url}</a>"
  end
end

puts linked
#=> <p class='video'><a href='http://vimeo/2342343'>http://vimeo/2342343</a></p>
#=> <p class='image'><img src='http://nerto.it/logo.png' /></p>
#=> <p class='text'>try to write</p>
#=> <p class='video'><a href='http://vimeo/2234923'>http://vimeo/2234923</a></p>
Run Code Online (Sandbox Code Playgroud)


Pra*_*oya 5

auto_link函数已移至此处的单独gem