如何解析链接和转义html实体?

时间:2013-12-16 17:50:11

标签: html ruby-on-rails ruby-on-rails-3 actionview html-escape-characters

我有一些用户提供的内容,我想要呈现。

显然内容应该被转义,rails默认会这样做。但是,我还想解析文本,以便将URL显示为链接。

有一个auto_link帮助器可以做到这一点。但无论我做什么顺序,我都无法得到理想的结果。

记录内容:

content                                             
  => "<img src=\"foo\" />\\r\\n\\r\\nhttp://google.com"

如果这是转义的,因为网址中的斜杠被转义,auto_link将无效:

Rack::Utils.escape_html(content)                    
  => "&lt;img src=&quot;foo&quot; &#x2F;&gt;\\r\\n\\r\\nhttp:&#x2F;&#x2F;google.com"

如果我首先使用auto_link,那么链接将被转义。此外,auto_link会删除不需要的内容而不是转义。如果输入中存在脚本标记,我希望它不会被删除。

auto_link(content)                                  
  => "<img src=\"foo\" />\\r\\n\\r\\n<a href=\"http://google.com\">http://google.com</a>"

知道如何获得所需的输出吗?

感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

您可以使用content.gsub!(/\\./, "")删除所有转义的空白字符。然后,您就可以使用auto_link

答案 1 :(得分:0)

我最终使用的解决方案是放弃auto_link,让Rack逃离我的内容服务器端,然后使用https://github.com/gabrielizaias/urlToLink

解析客户端文本中的链接
$('p').urlToLink();

答案 2 :(得分:0)

我成功了:

auto_link(h(content))