PHP利用get_headers()函数判断远程的url地址是否有效

问题:

利用url访问远程的文件、图片、视频时有时需要请求前判断url地址是否有效。

解决办法:

(PHP 5, PHP 7)

get_headers — 取得服务器响应一个 HTTP 请求所发送的所有标头。

利用PHP自带的函数get_headers(),利用http返回值是否存在200状态,来判断url地址是否有效。

get_headers()函数官方介绍:http://php.net/manual/zh/function.get-headers.php

具体实现代码如下:

案例一:

$url = "https://www.baidu.com";
$response = get_headers($url);
echo "<pre>";
var_dump($response);
$response = get_headers($url,1);//如果将可选的 format 参数设为 1,则 get_headers() 会解析相应的信息并设定数组的键名。
echo ‘<pre>‘;
var_dump($response);

打印结果如下:

array(16) {
  [0]=>string(15) "HTTP/1.0 200 OK"
  [1]=>string(20) "Accept-Ranges: bytes"
  [2]=>string(23) "Cache-Control: no-cache"
  [3]=>string(21) "Content-Length: 14722"
  [4]=>string(23) "Content-Type: text/html"
  [5]=>string(35) "Date: Wed, 20 Feb 2019 13:12:31 GMT"
  [6]=>string(21) "Etag: "5c653bc8-3982""
  [7]=>string(44) "Last-Modified: Thu, 14 Feb 2019 09:58:32 GMT"
  [8]=>string(39) "P3p: CP=" OTI DSP COR IVA OUR IND COM ""
  [9]=>string(16) "Pragma: no-cache"
  [10]=>string(15) "Server: BWS/1.1"
  [11]=>string(141) "Set-Cookie: BAIDUID=72E4B8623F9E998C790B22F8E8D64BEC:FG=1; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com"
  [12]=>string(137) "Set-Cookie: BIDUPSID=72E4B8623F9E998C790B22F8E8D64BEC; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com"
  [13]=>string(111) "Set-Cookie: PSTM=1550668351; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com"
  [14]=>string(21) "Vary: Accept-Encoding"
  [15]=>string(33) "X-Ua-Compatible: IE=Edge,chrome=1"
}
array(14) {
  [0]=>string(15) "HTTP/1.0 200 OK"
  ["Accept-Ranges"]=>string(5) "bytes"
  ["Cache-Control"]=>string(8) "no-cache"
  ["Content-Length"]=>string(5) "14722"
  ["Content-Type"]=>string(9) "text/html"
  ["Date"]=>string(29) "Wed, 20 Feb 2019 13:12:31 GMT"
  ["Etag"]=>string(15) ""5c653bc8-3982""
  ["Last-Modified"]=>string(29) "Thu, 14 Feb 2019 09:58:32 GMT"
  ["P3p"]=>string(34) "CP=" OTI DSP COR IVA OUR IND COM ""
  ["Pragma"]=>string(8) "no-cache"
  ["Server"]=>string(7) "BWS/1.1"
  ["Set-Cookie"]=>array(3) {
    [0]=>string(129) "BAIDUID=72E4B8623F9E998CF68FDDAD465EAF4A:FG=1; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com"
    [1]=>string(125) "BIDUPSID=72E4B8623F9E998CF68FDDAD465EAF4A; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com"
    [2]=>string(99) "PSTM=1550668351; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com"
  }
  ["Vary"]=>string(15) "Accept-Encoding"
  ["X-Ua-Compatible"]=>string(16) "IE=Edge,chrome=1"
}

案例二:

$url = "https://www.baidu.com";
$response = get_headers($url);
if(preg_match(‘/200/‘,$response[0])){
    echo "<pre/>";
    var_dump($response[0]);
}else{
   var_dump("无效url资源!");
}

打印结果如下:

string(15) "HTTP/1.0 200 OK"

原文地址:https://www.cnblogs.com/wenzheshen/p/10409268.html

时间: 2024-08-28 21:29:08

PHP利用get_headers()函数判断远程的url地址是否有效的相关文章

php filter_var函数判断邮箱,url,ip格式

以前使用php的时候还不知道有过滤器filter这玩意,那时候判断邮箱.url和ip地址格式是否符合都是用正则表达式.后来随着使用的逐渐深入,才知道在php中也可以使用内置的函数库过滤器filter来完成这些功能.对于filter_var这个函数,如果验证通过则会返回验证对象,否则返回false.判断邮箱<?php$email = '[email protected]'; $result = filter_var($email, FILTER_VALIDATE_EMAIL); 判断url<?p

shell脚本函数判断输入的IP地址是否符合规则

#判断IP是否符合标准规则 function judge_ip(){         #这里local $1出错,用2>/dev/null屏蔽掉错误,暂未发现影响输出结果         local $1 2>/dev/null         TMP_TXT=/tmp/iptmp.txt         echo $1 > ${TMP_TXT}         IPADDR=`grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}' ${TMP_TXT}`     

PHP判断远程图片或文件或url是否存在-180

我通常使用curl判断判断远程图片或文件是否存在: /**     * @link http://www.phpddt.com     */    function url_exists($url) {        $ch = curl_init();         curl_setopt ($ch, CURLOPT_URL, $url);         //不下载        curl_setopt($ch, CURLOPT_NOBODY, 1);        //设置超时     

javascript中常见的函数封装 :判断是否是手机,判断是否是微信,获取url地址?后面的具体参数值,毫秒格式化时间,手机端px、rem尺寸转换等

// 判断是否是手机function plat_is_mobile(){ var sUserAgent = navigator.userAgent.toLowerCase(); var bIsIpad = sUserAgent.match(/ipad/i) == "ipad"; var bIsIphoneOs = sUserAgent.match(/iphone os/i) == "iphone os"; var bIsMidp = sUserAgent.match

PHP判断远程图片或文件是否存在

PHP判断远程图片是否存在,此方法同样适用于判断远程文件是否存在,这是一种既然有效率且又准确的方法,建议采用此方法,以往使用get_headers()方法判断都是有问题的: function check_remote_file_exists($url) { $curl = curl_init($url); //不取回数据 curl_setopt($curl, CURLOPT_NOBODY, true); //发送请求 $result = curl_exec($curl); $found = fa

通过脚本判断远程Web服务器状态码是否正常

通过脚本判断远程Web服务器状态码是否正常 说明: (1)生产环境常见的HTTP状态码列表,请查看我的博文:http://wutengfei.blog.51cto.com/10942117/1934645 (2)实验中远程nginx服务器IP地址:192.168.100.114 本地客户端IP地址:192.168.100.118 脚本如下 方法1:if #!/bin/bash httpcode=`curl -I -s 192.168.100.114|head -1|cut -d " "

php如何判断远程文件是否存在

<?php /*   函数:remote_file_exists   功能:判断远程文件是否存在   参数: $url_file -远程文件URL   返回:存在返回true,不存在或者其他原因返回false */ function remote_file_exists($url_file){        //检测输入        $url_file = trim($url_file);        if (empty($url_file)) { return false; }      

PHP判断远程文件是否存在

<?php /* 函数:remote_file_exists 功能:判断远程文件是否存在 参数: $url_file -远程文件URL 返回:存在返回true,不存在或者其他原因返回false */ function remote_file_exists($url_file){ //检测输入 $url_file = trim($url_file); if (empty($url_file)) { return false; } $url_arr = parse_url($url_file); i

如何快速的获得url地址中参数名和参数值(在看PHP手册的时候无意间看见这两个函数,猜想能不能搭配使用。)

今天在看手册的时候,无意间看到这两个内置函数parse_url和parse_str.看到他们的用法后,我突然想到能不能利用这两个函数来获得url地址中的参数.为了验证我的猜想,我就以如下url为例子:https://www.baidu.com/baidu?wd=百度&tn=monline_4_dg&ie=utf-8 代码如下: $url = 'https://www.baidu.com/baidu?wd=百度&tn=monline_4_dg&ie=utf-8'; $url_