Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Simple HTML Dom error when site doesn't exist

Tags:

php

My script try to open every site from a file read line by line but when try to parse a site which doesn't exist the script stop and give me these error:

Warning: file_get_contents(): php_network_getaddresses: getaddrinfo failed: No such host is known. in C:\xampp\htdocs\simple_html_dom.php on line 76

Warning: file_get_contents(http://www.thissitedoesntexist.com): failed to open stream: php_network_getaddresses: getaddrinfo failed: No such host is known. in C:\xampp\htdocs\simple_html_dom.php on line 76

Fatal error: Call to a member function find() on a non-object in C:\xampp\htdocs\test2.php on line 11

How can I fix it ? How can I make it to run even if a site doesn't exist... to read a new line from my file(which means to read another site and then to read it) Also the scrip stop when receive errors like 404, 403, etc.

like image 968
user3680499 Avatar asked Feb 06 '26 14:02

user3680499


2 Answers

I would do this, to check for the error codes ---

foreach ($sites as $site) {

    $ch = curl_init('http://'.$site);

    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

    // Execute
    curl_exec($ch);

    // Check if any error occurred
    $info = curl_getinfo($ch);

    if($info['http_code'] != 200) {
       continue; 
    }
    //rest of loop, here -- 

}

You could even do something different depending on the error code you get with a case-switch --

like image 163
rm-vanda Avatar answered Feb 09 '26 07:02

rm-vanda


According to the documentation, file_get_contents() returns FALSE on failure. So, check what it returns to be sure that the site exists before trying to parse the returned content. If it doesn't exist, iterate to the next line in the file and keep continue the process:

if($file = file_get_contents("http://www.thissitedoesntexist.com")) {
    // Parse file here
    // Then continue reading the file by
    // starting at the next line.
    continue;
}

Reference:

file_get_contents()

like image 25
War10ck Avatar answered Feb 09 '26 07:02

War10ck



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!