检查URL在WordPress中的WP_Http之前是否存在

时间:2012-09-13 00:13:18

标签: php wordpress-plugin web-scraping wordpress

我在WordPress核心中找到了一个非常好的类WP_Http来获取外部网页内容。

问题是,当找不到网址时,它会抛出PHP错误,Fatal error: Cannot use object of type WP_Error as array.

$url = 'http://asklsahgioa.fdjeoiao.griawpo';   // non-existent url
$oHttp = new WP_Http;
$output = $oHttp->request($url);
print_r($output['body']);

所以我想确定url是否存在于class方法之前。以下代码有效,但速度很慢,我发现在找到url时,响应需要一秒左右。这意味着如果网址很好,它会降低速度。

$handle = @fopen($url,'r');
if($handle !== false)
   echo 'true';
else
   echo 'false';

我也试过了get_headers();但是,当找到网址时,它也需要一秒钟。

$siteHeader = @get_headers($url , 1);
if ($siteHeader > 1) 
    echo 'true';
else 
    echo 'false';

那么,有没有更好的方法呢?也许WordPress已经有了它的功能或者扩展了类来嵌入错误处理?

2 个答案:

答案 0 :(得分:2)

如何查看$outputWP_Error returned by a failed request呢?

$output = $oHttp->request($url);

if ($output instanceof WP_Error) {
  // handle error
  echo 'something terrible has happened';
} else {
  print_r($output['body']);
}

(请注意,instanceof运算符不适用于旧版本的PHP)

答案 1 :(得分:1)

此片段实际上不是检查请求是否失败的正确方法。

我指的是answer I have posted on Stack Overflow,它会向您展示这类任务的最佳做法。