由于输入数据混乱,无法继续将HTML元素转换为DOM

时间:2016-12-04 16:10:28

标签: php xml dom

我需要你的帮助......

我有一个函数来操作HTML元素来使用DOM解析来更改图像URL。我的功能正常。这是我的代码:

//Update image src with new src
function upd_img_src_in_html($html_src='', $new_src='')
{
    if($html_src == '' || $new_src == ''):
        return '';
    endif;

    $xml = new DOMDocument();
    $xml->loadHTML($html_src, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);

    $imgNodes = $xml->getElementsByTagName('img');
    for ($i = $imgNodes->length - 1; $i >= 0; $i--) {
        $imgNode = $imgNodes->item($i);
        $image_file_names = pathinfo($imgNode->getAttribute('src'), PATHINFO_BASENAME);

        if(!empty($image_file_names)):
            $imgNode->setAttribute('src', $new_src.$image_file_names);
            $imgNode->setAttribute('style', 'max-width:90%; margin-left:auto; margin-right:auto;');
        endif;
    }
    return html_entity_decode($xml->saveHTML());
}

然而,在我完成此功能后,出现了很多问题。

否1:result_box已在实体第1行中定义

enter image description here

没有。 2:意外的行标记..

enter image description here

我无法控制$html_src=''的所有输入以使其顺利运行。我已经尝试过一些处理问题1的努力,但仍然没有成功。例如,我使用libxml_use_internal_errors()但仍然出错。

第二个问题我无法克服它。是否只是处理更改图像src而不是使用DOMDocument()

的最简单方法

专家的答案真的需要在这里。请给我一些如何处理这些问题的建议。

谢谢..

1 个答案:

答案 0 :(得分:0)

处理凌乱的HTML和DOMDocument的一种方法是首先使用PHP tidy extension,这将纠正其中的所有错误。