gpt4 book ai didi

ruby - 为什么这个 Nokogiri 命令会去掉 HTML 标签?

转载 作者:数据小太阳 更新时间:2023-10-29 08:02:05 25 4
gpt4 key购买 nike

这是 previous question 的延续.我在使用这个 Nokogiri 片段时遇到了问题:

>> require 'nokogiri'
>> html = 'bad<p>markup</p>with<img src="foo.jpg">'
>> Nokogiri::HTML(html).at_css('body').children.map {|x| '<p>' + x.text + '</p>'}.join('')
=> "<p>bad</p><p>markup</p><p>with</p><p></p>"

我的图片标签怎么了?看起来 Nokogiri 可能会剥离所有存在的 HTML 标签(包括我原来的 <p> 围绕“标记”一词),并替换它们。我如何防止这种情况发生?我想要做的就是确保将完全未标记的文本包装在 <p> 中标记...

最佳答案

如果元素是文本节点,则仅将元素包裹在 p 标记中,否则对其调用 to_html:

require 'nokogiri'

html = 'bad<p>markup</p>with<img src="foo.jpg">'

Nokogiri::HTML(html).at_css('body').
children.map do |x|
if x.text?
'<p>' + x.text + '</p>'
else
x.to_html
end
end.join('')
#=> "<p>bad</p>\n<p>markup</p><p>with</p><img src=\"foo.jpg\">"

关于ruby - 为什么这个 Nokogiri 命令会去掉 HTML 标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3205410/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com