ruby - 在文本中查找 URL 并包裹在 anchor 标记中

标签 ruby

我基本上是在编写自己的 Markdown 解析器。我想检测字符串中的 URL,如果它是有效的 URL,则用 anchor 标记将其包装起来。例如:

string = 'here is a link: http://google.com'
# if string matches regex (which it does)
# should return:
'here is a link: <a href="http://google.com">http://google.com</a>'

# but this would remain unchanged:
string 'here is a link: google.com'

我怎样才能做到这一点?

如果您能指出我可以用作示例的现有 Ruby markdown 解析器中的代码,将加分。

最佳答案

通常:使用正则表达式查找 URL 并将它们包装在您的 HTML 中:

urls = %r{(?:https?|ftp|mailto)://\S+}i
html = str.gsub urls, '<a href="\0">\0</a>'

请注意,此特定解决方案将转换此文本:

See more at http://www.google.com.

……进入……

See more at <a href="http://www.google.com.">http://www.google.com.</a>

因此,您可能想尝试一下正则表达式,以确定 URL 真正应该在哪里结束。

关于ruby - 在文本中查找 URL 并包裹在 anchor 标记中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8996447/

相关文章:

ruby - 如何在 Ruby/Rails 中缓存/序列化 Net::IMAP 对象?

ruby-on-rails - Rails - 创建新类别(无法找到具有 ID 的类别)

ruby-on-rails - 在 Ruby On Rails 中创建模板并动态替换占位符

用 Hpricot 编写的 Ruby HTML 爬虫在转义 HTML 时遇到问题

mysql - Ruby mysql2 单个查询中的多个语句

动态创建方法中的 Ruby 动态参数

ruby-on-rails - 在没有方法名称的情况下在 ruby​​ 中调用

ruby-on-rails - 查找关联记录不属于特定记录的记录

ruby - Eventmachine gem 安装失败

ruby-on-rails - 如何在异常发生后继续处理 Ruby 中的 block ?