我们如何使用Ruby检查字符串是否为HTML?
如果string包含html标记,则返回true,否则返回false
答案 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