我在CentOS上运行以下代码
$roster = $utils->getContentCURL("http://exporter.nih.gov/ExPORTER_Catalog.aspx");
$docmp = new DOMDocument();
$docmp->loadHTML($roster);
它给了我一些警告,比如
PHP警告:DOMDocument::loadHTML(): Attribute alt redefined
有什么办法可以摆脱它吗?
网站验证告诉你,两次定义的alt
有几个错误。第252行就是一个例子:
<div align="center">
<a
href="XMLData/final/RePORTER_PRJ_X_FY2013_088.zip"
title="Click here to download XML File format"
>
<img
src="images/xml_icon.gif"
alt="Click here to download XML format file" <!-- RIGHT THERE! -->
width="41"
height="13"
border="0"
alt="" <!-- RIGHT THERE! -->
/>
</a>
<br/>
<b>(~1 MB)</b>
</div>
如果你拥有这个网站(你吗?),那么你应该简单地删除这些(或者可能要求他们修复他们的网站)
通常,修复无效的HTML代码(无论出于何种原因-缺少/重复属性,未正确关闭标记等)是不可能的,坦率地说,这是不实际的。
在这种情况下,您可能希望在使用DOMDocument
解析HTML之前对true
使用libxml_use_internal_errors()
函数。这个函数将防止显示错误,而是将它们存储在一个数组中,然后您可以相应地访问和处理该数组。只需在实例化DOMDocument
之前调用该函数:
<?php
libxml_use_internal_errors(true); // Set to true to suppress errors
$dom = new DOMDocument();
$dom->loadHTML($html); // Load your HTML string
$errors = libxml_get_errors(); // Get any errors that occurred during parsing