1

嗨,我在简单的 html dom 代码中有一个问题,它显示了这个错误:-

file_get_contents(http://www.arakne-links.com) [function.file-get-contents]:无法打开流:php_network_getaddresses:getaddrinfo 失败:不知道这样的主机。在第 75 行的 D:\xampp\htdocs\scrap\simple_html_dom.php

因为这个网址http://www.arakne-links.c现在不工作我想要

要知道有什么方法可以跳过不起作用的 url..

这是我正在使用的代码

ini_set('display_errors', 'on'); 
include_once('../../simple_html_dom.php');

// create HTML DOM

$htmls =  file_get_html('http://info.vilesilencer.com/top');    
foreach($htmls->find('a[rel="nofollow"]') as $e):
$test = $e->href;
$url  = array( $test );
$html = array();
foreach( $url as $key=>$value ) { 

// get html plain-text for webpage & assign to html array.

$html = file_get_html( trim($value) ); 

// echo html plain text:
echo $html->find('title', 0)->innertext;

}     
endforeach; 

请帮我解决这个问题。

谢谢

4

1 回答 1

4

在解析之前检查 URL 怎么样?

ini_set('display_errors', 'on'); 
include_once('simple_html_dom.php');

function urlOk($url) {
    $headers = @get_headers($url);
    if($headers[0] == 'HTTP/1.1 200 OK') return true;
    else return false;
}

// create HTML DOM

$htmls =  file_get_html('http://info.vilesilencer.com/top');    
foreach($htmls->find('a[rel="nofollow"]') as $e):
    $test = $e->href;
    $url  = array( $test );
    $html = array();
    foreach( $url as $key=>$value ) { 
       // get html plain-text for webpage & assign to html array.
       if (urlOk(trim($value))) {
           $html = file_get_html( trim($value) ); 
           echo $html->find('title', 0)->innertext;
           echo "<br />";
       } else {
         echo 'Error: URL '.$value.' doesn\'t exist.<br />';
       }
}     
endforeach; 
?>
于 2013-05-03T12:07:48.950 回答