Используя этот код с скриптом 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); }
Благодарю.
Попробуйте поставить эту 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; }