Php 使用DOMDocument解析HTML时使用Rogue元素
假设我的$html如下所示:Php 使用DOMDocument解析HTML时使用Rogue元素,php,html,parsing,dom,Php,Html,Parsing,Dom,假设我的$html如下所示: <!DOCTYPE html> <html> <head> <script type="text/javascript">document.createElement("video");document.createElement("audio");document.createElement("track");</script> <script type="text/javascri
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">document.createElement("video");document.createElement("audio");document.createElement("track");</script>
<script type="text/javascript" src="/gui/default/tinymcecontent.js"></script>
<script type="text/javascript" src="/includes/js/video-js/video.min.js"></script>
<link rel="stylesheet" href="/includes/js/video-js/video-js.css" />
<script type="text/javascript">document.createElement("video");document.createElement("audio");document.createElement("track");</script>
<script type"text/javascript" src="/includes/js/video-js/video.js"></script/>
<link rel="stylesheet" href="/includes/js/video-js/video-js.css" />
</head>
<body style="font-family: arial;font-size: 12px;">
<p> </p>
<table width="100%">
</table>
</body>
</html>
结果
$dom->saveHTML($full_dom)
是
\n\/\n\u00a0\n\n
元素
<p>\/><link rel=\"stylesheet\" href=\"\/includes\/js\/video-js\/video-js.css\"><\/p>
\/
从哪里来?
其他一切都很好,只是这个元素从head标签转移到body标签的元素。它来自以下行:
<script type"text/javascript" src="/includes/js/video-js/video.js"></script/>
天哪,我明白了。。我可以选择什么来忽略html部分中的错误,这些错误我无法控制,也不想与之有任何关系?我试着只在body标签上工作,而忽略其余部分。@SubjectX我想你做不到。但是,也许您可以尝试在解析
元素之前替换字符串。祝你好运。@SubjectX-请注意,一个符合标准的HTML5解析器将更好地处理你的格式错误的HTML-也就是说,与浏览器的处理方式相同。在“感谢您的建议”的答案中,有一些关于此类php库的建议。我确实在处理一些遗留代码,所以现在实现附加库并不是那么理想。。
<p>\/><link rel=\"stylesheet\" href=\"\/includes\/js\/video-js\/video-js.css\"><\/p>
<script type"text/javascript" src="/includes/js/video-js/video.js"></script/>
<script type="text/javascript" src="/includes/js/video-js/video.js"></script>
foreach (libxml_get_errors() as $error) {
print_r($error);
}