仅从字符串中删除锚标记

Remove only anchor tag from string

在控制器中:

str= "Employee <b><a href=http://xyz.localhost.in:3000/admin/company>Uday Das</a></b> has applied for leave."

我想从上面的字符串中删除锚标记,例如 Employee <b>Uday Das</b> has applied for leave.

我使用了这个代码:

ActionView::Base.full_sanitizer.sanitize(str)

但是它从字符串中删除了所有 html 标签,结果我得到 Employee Uday Das has applied for leave..

注意: 我得到的字符串是动态的,锚标记位置不固定,它可以在字符串中的任何位置。

您可以使用 nokogiri gem.

类似于:

require 'nokogiri'
doc = Nokogiri::HTML str
node = doc.at("a")
node.replace(node.text)

puts puts doc.inner_html
# <html><body><p>Employee <b>Uday Das</b> has applied for leave.</p></body></html>

或匹配您的确切输出:

puts doc.at("p").inner_html
# Employee <b>Uday Das</b> has applied for leave.

我有一个简单的解决方案:

include ActionView::Helpers::SanitizeHelper
sanitize(str, :tags=>["b"])

对于链接,您可以使用 ActionView::Helpers::SanitizeHelper

中的 strip_links 方法
strip_links('<a href="http://www.rubyonrails.org">Ruby on Rails</a>')
# => Ruby on Rails

strip_links('Please e-mail me at <a href="mailto:me@email.com">me@email.com</a>.')
# => Please e-mail me at me@email.com.

strip_links('Blog: <a href="http://www.myblog.com/" class="nav" target=\"_blank\">Visit</a>.')
# => Blog: Visit.

strip_links('<<a href="https://example.org">malformed & link</a>')
# => <malformed & link