1

我正在运行以下命令并遇到异常:

$headers = get_headers(" http://www.moneysupermarket.com/mortgages/ ", 1);

如何处理此异常(在我的情况下,请忽略此 url,因为它会导致异常)。

我试过了:

  1. 试着抓
  2. 此链接中的代码:https ://stackoverflow.com/a/6184127/1486303

但是,我仍然会出现此错误(我想忽略它)。

谢谢!

4

2 回答 2

3

新版本

同样,这不是问题的正确答案,但避免错误可以给出预期的结果。

get_headers 做一个没有代理的 HTTP GET,所以moneysupermarket.com不喜欢它,所以使用 ini_set 来设置请求中的默认用户代理,并且一切正常:

ini_set("user_agent","Mozilla custom agent");
$headers = get_headers("http://www.moneysupermarket.com/mortgages/", 1);

以前的

显然,如果请求格式不正确,moneysupermarket.com 会重置连接,请使用 cUrl 执行请求(取自 curl 手册页):

// create a new cURL resource
$ch = curl_init();

// set URL and other appropriate options
curl_setopt($ch, CURLOPT_URL, "http://www.moneysupermarket.com/mortgages/");
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla custom agent");

// grab URL and pass it to the browser
curl_exec($ch);

// close cURL resource, and free up system resources
curl_close($ch);
于 2012-07-17T08:40:55.320 回答
3

没有例外。get_headers() 出错时返回 FALSE。虽然有一条警告消息,但这也不例外,因此无法被捕获。有关警告和其他错误,请参阅:http ://www.php.net/manual/en/function.set-error-handler.php

于 2012-07-17T08:51:27.677 回答