Bren
Bren

Reputation: 59

Handle errors in simple html dom

I have some code to get some public available data that i am fetching from a website

//Array of params

foreach($params as $par){

$html = file_get_html('WEBSITE.COM/$par');

$name = $html->find('div[class=name]');
$link = $html->find('div[class=secondName]');

foreach($link as $i => $result2)
{

$var = $name[$i]->plaintext;
echo $result2->href,"<br>";
//Insert to database
} 
}

So it goes to the given website with a different parameter in the URL each time on the loop, i keep getting errors that breaks the script when a 404 comes up or a server temporarily unavailable. I have tried code to check the headers and check if the $html is an object first but i still get the errors, is there a way i can just skip the errors and leave them out and carry on with the script?

Code i have tried to checked headers

function url_exists($url){
if ((strpos($url, "http")) === false) $url = "http://" . $url;
$headers = @get_headers($url);
//print_r($headers);
if (is_array($headers)){
//Check for http error here....should add checks for other errors too...
if(strpos($headers[0], '404 Not Found'))
    return false;
else
    return true;    
}         
else
return false;
}

Code i have tried to check if object

if (method_exists($html,"find")) {
 // then check if the html element exists to avoid trying to parse non-html
 if ($html->find('html')) {
      // and only then start searching (and manipulating) the dom 

Upvotes: 2

Views: 2712

Answers (1)

Filippos Karapetis
Filippos Karapetis

Reputation: 4679

You need to be more specific, what kind of errors are you getting? Which line errors out?

Edit: Since you did specify the errors you're getting, here's what to do:

I've noticed you're using SINGLE quotes with a string that contains variables. This won't work, use double quotes instead, i.e.:

$html = file_get_html("WEBSITE.COM/$par");

Perhaps this is the issue?

Also, you could use file_get_contents()

if (file_get_contents("WEBSITE.COM/$par") !== false) {
  ...
}

Upvotes: 1

Related Questions