保持角括号内的内容不变



我正在使用Nokogiri进行一些HTML处理。我在使用角撑时遇到了一些问题。

这是我的代码:

content = "Testing angular braces with some <random content>"
parsed_html = Nokogiri::HTML.fragment(content)
p parsed_html.inner_html

输出为

"Testing angular braces with some <random content></random>"

显然,我不希望出现那些</random>结束标记。

我如何才能跳过那些带大括号的内容。内容可能也包含HTML元素。

如果您的字符串是嵌入了<>的文本,但它们并没有包围实际的HTML标记,那么您需要对它们进行HTML编码。Nokogiri假设这些是真实的标记,并将进行修复以关闭标记并生成相对正确的标记。

require 'htmlentities'
require 'nokogiri'
html_encoder = HTMLEntities.new
content = html_encoder.encode("Testing angular braces with some <random content>")
# => "Testing angular braces with some &lt;random content&gt;"
parsed_html = Nokogiri::HTML.fragment(content)
puts parsed_html.to_html
# >> Testing angular braces with some &lt;random content&gt;

如果您同时拥有HTML标记和伪标记,那么您的任务将变得更加困难,因为您必须对HTML标记进行预处理,并将其更改为其他分隔符,运行编码,然后重新处理文本,将HTML标记分隔符返回到应有的值,然后使用Nokogiri对其进行解析。

如何做到这一点留给读者练习,因为这是一个完全不同的问题。

相关内容

  • 没有找到相关文章

最新更新