2014-12-07 66 views
2

我想寫一個腳本來解析一個網頁。在對頁面內容做任何事情之前,我想將每個鏈接從相對轉換爲絕對。使用PHP DOMDocument :: loadHTMLFile修改所有hrefs,並使它們絕對

當我嘗試修改內容,我得到以下錯誤:(在該行發生錯誤:$鏈路>的getAttribute( 'href' 屬性)= $ HREF;)

Fatal error: Can't use method return value in write context

我相信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; 
} 
?> 

回答

1

如果你想改變href=""屬性的值,它的->setAttribute()

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

OH duh。我認爲這個問題完全不同。謝謝! – pallazzio 2014-12-07 06:38:04

+0

@pallazzio當然,我很高興這有幫助 – Ghost 2014-12-07 06:40:08

0

$link->getAttribute('href')返回一些字符串,因此你試圖做這樣的事情:

'some string' = 'another string'; 

您應該使用集合屬性而不是getAttribute