解析有效的html(php-tidy)
我想使用tidy插件,但只用于一个字符串。我使用的代码是:解析有效的html(php-tidy),php,parsing,htmltidy,Php,Parsing,Htmltidy,我想使用tidy插件,但只用于一个字符串。我使用的代码是: tidy_repair_string($string); 我的问题是这个脚本在一个文件中,我只需要使用一次就可以包含他 但是要有重复的html、正文和标题标记(文件的一般标记) 如何只验证我的字符串而不返回html等 示例:如果我的字符串是Text我只想返回Text 不是: <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN"> <html> <head>
tidy_repair_string($string);
我的问题是这个脚本在一个文件中,我只需要使用一次就可以包含他
但是要有重复的html、正文和标题标记(文件的一般标记)
如何只验证我的字符串而不返回html等
示例:如果我的字符串是Text
我只想返回Text
不是:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<title></title>
</head>
<body>
<b><s>Text</s></b>
</body>
</html>
正文
谢谢 也许这样行得通。如果没有,请参阅 更多选择
$string = tidy_repair_string($string, array(
'output-html' => false,
'doctype' => false));
正如您在问题中已经指出的,Tidy操作完整的HTML文档,因此修复后的文档包含(如果配置)doctype,但始终包含head部分 您正在寻找一个HTML片段,它不是完整的HTML文档 这种差异已经包含了解决方案:将HTML片段作为主体注入,将其作为文档修复,然后仅获取主体的子元素作为字符串。完成。下面是一个相当简短但已经有效的示例:
/* Tidy example: Clean a HTML fragment */
$fragment = '<b><s>Text</b>';
$tidy = new Tidy;
$tidy->parseString($fragment);
$tidy->cleanRepair();
$result = implode('', (array) $tidy->body()->child); // <b><s>Text</s></b>
此示例将提供以下输出,演示默认配置中getType
返回值的含义:
Valid fragment - Status: 0
HTML: <b><s>Text</s></b>
Repaired: <b><s>Text</s></b>
Unclosed tag - Status: 1
HTML: <b><s>Text</b>
Repaired: <b><s>Text</s></b>
Unknown tag - Status: 2
HTML: <unknown></unknown>
Repaired:
Unfinished attribute - Status: 2
HTML: <a href=">link</a>
Repaired: <a href="%3Elink%3C/a%3E"></a>
有效片段-状态:0
HTML:文本
修复:文本
未关闭的标签-状态:1
HTML:文本
修复:文本
未知标签-状态:2
HTML:
修复:
未完成属性-状态:2
HTML:
修复:
这超出了您的要求,我只是添加了一个附加示例,例如,查看字符串中的所有标记是否都已关闭。没有。我会试着看看sourceforge。谢谢,只是看看。
Valid fragment - Status: 0
HTML: <b><s>Text</s></b>
Repaired: <b><s>Text</s></b>
Unclosed tag - Status: 1
HTML: <b><s>Text</b>
Repaired: <b><s>Text</s></b>
Unknown tag - Status: 2
HTML: <unknown></unknown>
Repaired:
Unfinished attribute - Status: 2
HTML: <a href=">link</a>
Repaired: <a href="%3Elink%3C/a%3E"></a>