欢迎光临
我们一直在努力

php7.3-快速获取远程网页headers头信息的办法

在平时的php项目中,经常需要用到接口的调用,我们一般对接口调用是否成功,首先基本上全是判断接口API返回信息中的headers信息返回的状态码是不是200,如果是200那么再对返回来的数据进行处理,对于状态码的获取我们可以在获取数据的同时也获取状态码的值,以前写过文章介绍过怎么远程获取信息php7-远程获取api接口或网页内容,只是没详细的介绍在获取的返回数据的数组中,数组0就是返回的网页状态码,一般在项目中获取网页状态码是我们最常用到的。

function http_request_json($url)
{
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);//https的URL需要用到
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);//https的URL需要用到
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $result[1] = curl_exec($ch); 
    $result[0]= curl_getinfo($ch,CURLINFO_HTTP_CODE); 
    curl_close($ch);
    return $result;
}

如果想获得更多的headers参数,curl_getinfo函数只需填写第一个参数便可以,这样这个函数就会返回一个数组来。

<?php
	$ch = curl_init();
	curl_setopt($ch, CURLOPT_URL,"https://www.rsyncd.net/" );
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1 );
	curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
	curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        $result[1] = curl_exec($ch); 
        $result[0]= curl_getinfo($ch); //只保留一个参数。
        curl_close($ch);
	$str=$result[0];
	print_r($str);
  • 打印结果
Array
(
    [url] => https://www.rsyncd.net/
    [content_type] => text/html; charset=UTF-8
    [http_code] => 200
    [header_size] => 277
    [request_size] => 52
    [filetime] => -1
    [ssl_verify_result] => 20
    [redirect_count] => 0
    [total_time] => 0.686
    [namelookup_time] => 0.249
    [connect_time] => 0.265
    [pretransfer_time] => 0.327
    [size_upload] => 0
    [size_download] => 43431
    [speed_download] => 63310
    [speed_upload] => 0
    [download_content_length] => -1
    [upload_content_length] => -1
    [starttransfer_time] => 0.655
    [redirect_time] => 0
    [redirect_url] => 
    [primary_ip] => 116.255.196.196
    [certinfo] => Array
        (
        )

    [primary_port] => 443
    [local_ip] => 192.168.2.171
    [local_port] => 50466
)

上面的数组打印出一堆数据,如果需要获取那个值,直接获取就可以了,比如想通过headers头信息获取服务器的IP,直接获取数组中的primary_ip值便可以。

//获取服务器端IP地址
echo $str['primary_ip']; //打印结果:116.255.196.196

细心的码友可能发现了,上面这个函数返回来了一堆数据,好像是没有我们需要的Server和X-Powered-By的这二个值,那么这二个值怎么获取呢,看下面的函数,能帮我们直接获取这二个值。

$url = "https://www.rsyncd.net/";
print_r(get_headers($url, 1));
  • 打印结果

Array
(
    [0] => HTTP/1.1 200 OK
    [Server] => nginx
    [Date] => Thu, 14 Feb 2019 08:02:26 GMT
    [Content-Type] => text/html; charset=UTF-8
    [Connection] => close
    [Vary] => Accept-Encoding
    [X-Powered-By] => PHP/7.3.1
    [Link] => <https://www.rsyncd.net/wp-json/>; rel="https://api.w.org/"
)

返回的也是一个数组,想获取那个值,直接获取就可以,说了这么多,实际在运用过程中,大家需要灵活动用,如果只是在获取内容时,确认返回的状态码是不是200时,那用上面的curl_getinfo函数就可以了,因为上面的curl函数在获取网页内容时已经获取到网页状态码了,无需再进行第二次获取了,如果要获取网页的服务器信息,那就用下面的get_headers函数。

赞(0) 打赏
原创文章转载请注明出处:爱编程 » php7.3-快速获取远程网页headers头信息的办法
分享到: 更多

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

爱编程、一个运维兼程序员的博客!

联系我们

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏