使用PHP DOMDocument :: loadHTMLFile修改所有href并使其成为绝对值

时间:2014-12-07 06:01:47

标签: php html domdocument

我试图编写一个脚本来解析网页。在对页面内容做任何事情之前,我想将每个链接从相对转换为绝对。

当我尝试修改内容时,出现以下错误:(错误发生在行:$ link-> getAttribute(' href')= $ href;)

  

致命错误:在写上下文中不能使用方法返回值

我相信loadHTMLFile()会返回一个对象。我对使用物体不太了解。是否可以修改它并返回修改后的版本?

我考虑过把它变成文字,但那不会奏效。我需要在转换' href'之后找到某些元素的内容。属性。我使用simple_html_dom.php库来查找我需要的元素;它依赖于保持对象的格式与loadHTMLFile()返回的格式相同。

<?php    
$domain = 'http://www.test.com/'

$doc = new DOMDocument();

@$doc->loadHTMLFile($domain);
$doc = make_absolute($doc);

function make_absolute($obj){
    foreach($obj->getElementsByTagName('a') as $link) {
        $href = trim($link->getAttribute('href'));

        if ( (substr($href,0,1) == '/' ) {
            $href = 'http://www.test.com'.$href;
        }

        $link->getAttribute('href') = $href;
    }
    return $obj;
}
?>

2 个答案:

答案 0 :(得分:2)

如果您想更改href=""属性的值,请->setAttribute()

$link->setAttribute('href', $href);

答案 1 :(得分:0)

$link->getAttribute('href')会返回一些字符串,因此您尝试执行以下操作:

'some string' = 'another string';

您应该使用设置属性而不是getAttribute