2015-12-29 8 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> -tag открыт в два раза ,

Попробуйте удалить второй <body> -tag. Кроме этого, ваш код, похоже, работает.

1

На самом деле Вы gettting links..But есть предупреждение ..разработать Решить эту U нужно добавить одну строку .. Я получаю это предупреждение

E_WARNING: тип 2 - DOMDocument :: loadHTML (): htmlParseStartTag: < неуместны тела> тег Entity, строка 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 (истина); используется для отключения предупреждения.

Смежные вопросы