将此代码与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);
如何处理file_get_html($url)
部分的错误?现在,如果页面不存在,则在浏览器窗口中显示错误。我喜欢抓住它们并显示我的文字,例如:
if(some error happened on file_get_html($url)) {
$errors = true;
} else {
html = file_get_html($url);
}
感谢。
答案 0 :(得分:6)
您好 您需要检查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;
}
答案 1 :(得分:4)
<击>
尝试将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;
}
}