2015-12-29 90 views
0

如何解決下面的代碼問題?此代碼獲取網站中的所有鏈接,但它不適用於下面的某個網站。我怎麼解決這個問題?PHP - file_get_contents不起作用

<?php 

    $html = file_get_contents('http://blogfa.com/members/updated.aspx'); 

    $dom = new DOMDocument(); 
    @$dom->loadHTML($html); 

    // grab all the on the page 
    $xpath = new DOMXPath($dom); 
    $hrefs = $xpath->evaluate("/html/body//a"); 

    for ($i = 0; $i < $hrefs->length; $i++) { 
     $href = $hrefs->item($i); 
     $url = $href->getAttribute('href'); 
     echo $url . '<br />'; 
    } 

?> 
+2

你得到了什麼錯誤信息? – RomanPerekhrest

+0

@RomanPerekhrest我沒有得到任何錯誤。沒有在頁面中打印。 –

+0

從這行刪除'@'符號'@ $ dom-> loadHTML($ html);'查看當前的實際情況 – RomanPerekhrest

回答

0

當我運行代碼,我得到了下面的PHP錯誤:

E_WARNING : type 2 -- DOMDocument::loadHTML(): htmlParseStartTag: misplaced <body> tag in Entity, line: 20 -- at line 6 

如果你看看你的網頁在http://blogfa.com/members/updated.aspx的源代碼,你會看到<body> - 標籤被打開兩次。

嘗試刪除第二個<body> -tag。除此之外,你的代碼似乎工作。

1

其實你流汗links..But有警告..To解決這個u必須添加一行.. 我得到這個警告

E_WARNING:2型 - DOM文檔:: loadHTML( ):htmlParseStartTag:放錯位置<體>在實體標記,線:20 - 第6行

解決方案:

<?php 
$html = file_get_contents('http://blogfa.com/members/updated.aspx'); 
$dom = new DOMDocument(); 
libxml_use_internal_errors(true); 
$dom->loadHTML($html); 

// grab all the on the page 
$xpath = new DOMXPath($dom); 
$hrefs = $xpath->evaluate("/html/body//a"); 

for ($i = 0; $i < $hrefs->length; $i++) { 
    $href = $hrefs->item($i); 
    $url = $href->getAttribute('href'); 
    echo $url . '<br />'; 
} 
?> 

libxml_use_internal_errors(真);用於禁用警告。