在ruby中检查String是否为HTML

时间:2015-12-22 11:58:19

标签: ruby string

我们如何使用Ruby检查字符串是否为HTML?

如果string包含html标记,则返回true,否则返回false

5 个答案:

答案 0 :(得分:7)

  

如果string包含html标记,则返回true,否则返回false

此测试(“string contains <html>”)不足以确定字符串是否为HTML。

  

我们如何使用Ruby检查字符串是否为HTML?

优秀的Nokogiri gem提供HTML验证。

$ gem install nokogiri

require 'nokogiri'

Nokogiri::HTML.parse("<foo>bar</foo>").validate

# => [#<Nokogiri::XML::SyntaxError...>, ...]

答案 1 :(得分:2)

这是一个非常广泛的问题。首先,您想验证HTML的语义或语法吗?

验证格式可能很简单,但并不意味着有效的HTML文档包含语义上有效的标记。

<foo>bar</foo>

是一个语法正确的HTML文档,但它在语义上并不合适。

最简单的方法是try to parse the document并拯救例外。如果Nokogiri引发异常,则该文档无效HTML。

答案 2 :(得分:2)

检查文本中是否包含HTML的一种方法是使用strip_tags(如果您使用的是Rails):

% pgcc -acc -ta=nvidia:nordc -fPIC -c libmyacc.c -V16.5                            
% pgcc -shared -o libmyacc.so -L/opt/pgi/linux86-64/16.5/lib -L/usr/lib64 -L/usr/lib/gcc/x86_64-redhat-linux/4.8.5 -laccapi -laccg -laccn -laccg2 -ldl -lcudadevice -lgomp -lnuma -lpthread -lnspgc -lpgc -lm -lgcc -lc -lgcc libmyacc.o -V16.5
% gcc f1.c -L/proj/pgi/linux86-64/16.5/lib -L/usr/lib64 -L/usr/lib/gcc/x86_64-redhat-linux/4.8.5 -L. -laccapi -laccg -laccn -laccg2 -ldl -lcudadevice -lgomp -lnuma -lpthread -lnspgc -lpgc -lm -lgcc -lc -lgcc -lmyacc -DN=1024
% ./a.out
Num devices: 8
-------- SUM: 523776.000

这将告诉您文本中是否有HTML标记,无论它是否有效。

答案 3 :(得分:0)

如果您只是想在不验证标签的情况下查看html的片段是否正确:

Nokogiri::XML("<foo>bar</foo>").errors.empty?

答案 4 :(得分:0)

让我们说我们要检查的字符串是

test_string = "<ul>\n\t<li>item 1</li>\n\t<li>item 2</li>\n</ul>"

如果要检查整个HTML是否正确。即使缺少较高层次的标签,这也会引发异常。

Nokogiri::HTML.parse(test_string).errors.empty?
#return false

如果要检查片段,则应使用

Nokogiri::XML.parse(test_string).errors.empty?
#return true