Ошибки обработки PHP

Используя этот код с скриптом simplehtmldom ( http://simplehtmldom.sourceforge.net/manual.htm ):

function file_get_html() { $dom = new simple_html_dom; $args = func_get_args(); $dom->load(call_user_func_array('file_get_contents', $args), true); return $dom; } $url = 'http://site.com/'; $html = file_get_html($url); 

Как обрабатывать erros на file_get_html($url) ? Теперь, если страница не существует, она показывает ошибки в окне браузера. Я предпочитаю поймать их и показать свой текст, а именно:

 if(some error happened on file_get_html($url)) { $errors = true; } else { html = file_get_html($url); } 

Благодарю.

Related of "Ошибки обработки PHP"

Попробуйте поставить эту try-catch в свою функцию:

 try{ $dom->load(call_user_func_array('file_get_contents', $args), true); return $dom; } catch(Exception $e){ //echo $e->getMessage(); throw new Exception('could not load the url'); } 

Обновить:

Или вы можете использовать эту функцию, чтобы увидеть, действительно ли удаленная ссылка существует:

 function url_exists($url){ if ((strpos($url, "http")) === false) $url = "http://" . $url; if (is_array(@get_headers($url))) return true; else return false; } 

Вот как вы можете использовать вышеприведенную функцию:

 function file_get_html() { $args = func_get_args(); if (url_exists($args)) { $dom = new simple_html_dom; $dom->load(call_user_func_array('file_get_contents', $args), true); return $dom; } else { echo "The url isn't valid"; return false; } } 

Привет. Вам нужно проверить сообщение 404 Not Found, поскольку в любом случае возвращается массив.

 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; }