PHP警告:DOMDocument::loadHTML():属性被重新定义


PHP Warning: DOMDocument::loadHTML(): Attribute alt redefined

我在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