DOMDocument-> saveHTML不起作用

时间:2017-02-23 19:13:01

标签: php domdocument

一个api给我发了几个html代码(只是身体的一部分,而不是完整的html),我想和其他人一起更改所有图像src。

我得到并设置属性然后如果我在foreach循环中回显它我看到旧的和新的值但是当我尝试用saveHTML保存它然后转储从api返回的完整html块,我没有看到替换的路径

    $page = json_decode($page);
    $page = (array) $page->rows;
    $page =  ($page[0]->_->content);


    $dom = new \DOMDocument();
    $dom->loadHTML($page);
    $tag = $dom->getElementsByTagName('img');
    foreach($tag as $t)
    {
        echo $t->getAttribute('src').'<br'>; //showing old src
        $t->setAttribute('src', 'bla');
        echo $t->getAttribute('src').'<br'>; //showing new src
    }

    $dom->saveHTML();
    var_dump($page); //nothing is changed

1 个答案:

答案 0 :(得分:1)

我的朋友,这不是它的工作方式。

您应该在saveHTML()的结果中编辑HTML:

$editedHtml = $dom->saveHTML()
var_dump($editedHtml);

现在您应该看到更改过的HTML了。

解释是$page是与$dom对象无关的完全不同的对象。

干杯!