• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    php使用curl获取header检测开启GZip压缩的方法

    本文实例讲述了php使用curl获取header检测开启GZip压缩的方法。分享给大家供大家参考,具体如下:

    获得网页header信息,是网站开发人员和维护人员常用的技术。网页的header信息,非常丰富,非专业人士一般较难读懂和理解各个项目的含义。

    获取网页header信息,方法多种多样,就php语言来说,我作为一个菜鸟,知道的方法也有4种那么多。下面逐一献上。

    方法一:使用get_headers()函数

    这个方法很多人使用,也很简单便捷,只需要两行代码即可搞定。如下:

    $thisurl = "https://www.jb51.net/";
    print_r(get_headers($thisurl, 1));
    
    

    得到的结果为:

    Array
    (
        [0] => HTTP/1.1 200 OK
        [Content-Type] => text/html
        [Last-Modified] => Wed, 15 Aug 2018 01:23:03 GMT
        [ETag] => "99a921833634d41:0"
        [Server] => Microsoft-IIS/7.5
        [X-Powered-By] => jb51.net
        [Date] => Wed, 15 Aug 2018 01:31:48 GMT
        [Connection] => close
        [Content-Length] => 89251
    )

    方法二:使用http_response_header

    代码也很简单,仅需三行:

    $thisurl = "https://www.jb51.net/";
    $html = file_get_contents($thisurl ); 
    print_r($http_response_header);
    
    

    得到的结果为:

    Array
    (
        [0] => HTTP/1.1 200 OK
        [1] => Content-Type: text/html
        [2] => Last-Modified: Wed, 15 Aug 2018 01:33:04 GMT
        [3] => ETag: "7b9757e93734d41:0"
        [4] => Server: Microsoft-IIS/7.5
        [5] => X-Powered-By: jb51.net
        [6] => Date: Wed, 15 Aug 2018 01:34:15 GMT
        [7] => Connection: close
        [8] => Content-Length: 89282
    )

    方法三:使用stream_get_meta_data()函数

    代码也只有三行:

    $thisurl = "https://www.jb51.net/";
    $fp = fopen($thisurl, 'r'); 
    print_r(stream_get_meta_data($fp));
    
    

    得到的结果为:

    Array
    (
        [wrapper_data] => Array
            (
                [0] => HTTP/1.1 200 OK
                [1] => Content-Type: text/html
                [2] => Last-Modified: Wed, 15 Aug 2018 01:38:45 GMT
                [3] => ETag: "ecc8f8b43834d41:0"
                [4] => Server: Microsoft-IIS/7.5
                [5] => X-Powered-By: jb51.net
                [6] => Date: Wed, 15 Aug 2018 01:39:35 GMT
                [7] => Connection: close
                [8] => Content-Length: 89421
            )
        [wrapper_type] => http
        [stream_type] => tcp_socket/ssl
        [mode] => r
        [unread_bytes] => 7945
        [seekable] =>
        [uri] => https://www.jb51.net/
        [timed_out] =>
        [blocked] => 1
        [eof] =>
    )

    上述三种方法都可以轻松获得网页header信息,且包含的信息都已经相当丰富,满足一般要求,不过比较遗憾的是,上述三种方法都不能用来检测网页是否启用了GZip压缩。要检测GZip压缩,还需其他的方法才行。这里介绍的是用curl()函数来检测。

    使用curl获得header可以检测GZip压缩

    先贴出代码:

    ?php
    $szUrl = 'http://www.webkaka.com/';
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $szUrl);
    curl_setopt($curl, CURLOPT_HEADER, 1); //输出header信息
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); //不显示网页内容
    curl_setopt($curl, CURLOPT_ENCODING, ''); //允许执行gzip
    $data=curl_exec($curl); 
    if(!curl_errno($curl))
    {
      $info = curl_getinfo($curl);
      $httpHeaderSize = $info['header_size']; //header字符串体积
      $pHeader = substr($data, 0, $httpHeaderSize); //获得header字符串
      $split  = array("\r\n", "\n", "\r"); //需要格式化header字符串
      $pHeader = str_replace($split, 'br>', $pHeader); //使用br>换行符格式化输出到网页上
      echo $pHeader;
    }
    ?>
    
    

    输出结果如下:

    HTTP/1.1 200 OK
    Cache-Control: max-age=86400
    Content-Length: 15189
    Content-Type: text/html
    Content-Encoding: gzip
    Content-Location: http://www.webkaka.com/index.html
    Last-Modified: Fri, 19 Jul 2013 03:52:28 GMT
    Accept-Ranges: bytes
    ETag: "0268633384ce1:5cb3"
    Vary: Accept-Encoding
    Server: Microsoft-IIS/6.0
    X-Powered-By: ASP.NET
    Date: Fri, 19 Jul 2013 09:27:21 GMT

    上面输出结果里可以看到一个项目:Content-Encoding: gzip,这个正是我们用来判断网页是否启用GZip压缩的项目。

    另外,需要认真注意下本实例里的注释部分,不能少了任何一项,否则可能获取header信息有误。

    更多关于PHP相关内容感兴趣的读者可查看本站专题:《php curl用法总结》、《PHP网络编程技巧总结》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《PHP数据结构与算法教程》及《PHP中json格式数据操作技巧汇总》

    希望本文所述对大家PHP程序设计有所帮助。

    您可能感兴趣的文章:
    • PHP curl伪造IP地址和header信息代码实例
    • php curl中gzip的压缩性能测试实例分析
    • php使用curl检测网页是否被百度收录的示例分享
    • php中通过curl检测页面是否被百度收录
    • php使用curl判断网页404(不存在)的方法
    • php下利用curl判断远程文件是否存在的实现代码
    • PHP使用curl_multi_select解决curl_multi网页假死问题的方法
    • php使用curl详细解析及问题汇总
    • 关于PHP的curl开启问题探讨
    • 关于php curl获取301或302转向的网址问题的解决方法
    上一篇:深入研究PHP中的preg_replace和代码执行
    下一篇:php使用curl_init()和curl_multi_init()多线程的速度比较详解
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    php使用curl获取header检测开启GZip压缩的方法 php,使用,curl,获取,header,