php判断远程资源是否存在

<?php
$url1='https://cache..com/upload/information/20200310/52/107771.jpg' //exists
$url2='https://cache..com/upload/information/20200310/52/107776.jpg'; //not exists 



$get1=get_headers($url1);
$get2=get_headers($url2);

print_r($get1);
print_r($get2);


返回结果:

Array
(
    [0] => HTTP/1.1 404 Not Found
    [1] => Date: Tue, 14 Mar 2017 10:58:00 GMT
    [2] => Server: Apache
    [3] => Vary: User-Agent,Accept-Encoding
    [4] => Connection: close
    [5] => Content-Type: text/html
)
Array
(
    [0] => HTTP/1.1 200 OK
    [1] => Date: Tue, 14 Mar 2017 10:58:00 GMT
    [2] => Server: Apache
    [3] => Last-Modified: Wed, 09 Nov 2016 08:57:06 GMT
    [4] => ETag: "2162a05-13f5-540da70f97c80"
    [5] => Accept-Ranges: bytes
    [6] => Content-Length: 5109
    [7] => Vary: User-Agent
    [8] => Connection: close
    [9] => Content-Type: p_w_picpath/png
)

可以看到返回的http状态信息组成的一维数组.且第一个数组单元为响应状态信息.


于是乎,通过获取到的状态码,用来判断远程资源是否存在。

$statusCode=substr($get1[0], 9, 3);
if($statusCode == 200 || $statusCode == 304){
    echo "It's exists."
}else{
    echo "It's not exists."
}

这里需要注意get请求https时,需要关闭证书校验的问题