为了账号安全,请及时绑定邮箱和手机立即绑定

PHP--获取响应头(Response Header)方法

标签:
PHP

方法一:

==========================================

$baiduUrl = "http://www.baidu.com/link?url=LZE_J6a1AcieLlTzNxUZQVpe2trQ99zx1ls85ux8dXaGlFB3eiEm_Y6SJC1sNQf_";

file_get_contents($baiduUrl);

$responseInfo = $http_response_header;

print_r($responseInfo);

// 输出:

Array

(

    [0] => HTTP/1.1 302 Found

    [1] => Date: Fri, 27 Jun 2014 02:47:35 GMT

    [2] => Server: Apache

    [3] => Location: http://www.edeng.cn/s/chuna/

    [4] => Cache-Control: max-age=86400

    [5] => Expires: Sat, 28 Jun 2014 02:47:35 GMT

    [6] => Content-Length: 212

    [7] => Connection: Close

    [8] => Content-Type: text/html; charset=iso-8859-1

    [9] => HTTP/1.1 200 OK

    [10] => Server: nginx/1.4.3

    [11] => Date: Fri, 27 Jun 2014 02:47:35 GMT

    [12] => Content-Type: text/html; charset=utf-8

    [13] => Connection: close

    [14] => Expires: Mon, 26 Jul 1997 05:00:00 GMT

    [15] => Last-Modified: Fri, 27 Jun 2014 02:47:35 GMT

    [16] => Cache-Control: no-store, no-cache, must-revalidate

    [17] => Pragma: no-cache

    [18] => Vary: User-Agent,Accept-Encoding

    [19] => X-Cache: MISS from web1.edeng.cn

    [20] => Via: 1.1 web1.edeng.cn:80 (squid)

)

遍历该数组即可得到相应的值。比如要想获得 Location 的值:

foreach ($responseInfo as $loop) {

if(strpos($loop, "Location") !== false){

$edengUrl = trim(substr($loop, 10));

print_r($edengUrl);

// 输出: http://www.edeng.cn/s/chuna/

}

}

方法二:

==========================================

function get_head($sUrl){

$oCurl = curl_init();

// 设置请求头, 有时候需要,有时候不用,看请求网址是否有对应的要求

$header[] = "Content-type: application/x-www-form-urlencoded";

$user_agent = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.146 Safari/537.36";

curl_setopt($oCurl, CURLOPT_URL, $sUrl);

curl_setopt($oCurl, CURLOPT_HTTPHEADER,$header);

// 返回 response_header, 该选项非常重要,如果不为 true, 只会获得响应的正文

curl_setopt($oCurl, CURLOPT_HEADER, true);

// 是否不需要响应的正文,为了节省带宽及时间,在只需要响应头的情况下可以不要正文

curl_setopt($oCurl, CURLOPT_NOBODY, true);

// 使用上面定义的 ua

curl_setopt($oCurl, CURLOPT_USERAGENT,$user_agent);

curl_setopt($oCurl, CURLOPT_RETURNTRANSFER, 1 );

// 不用 POST 方式请求, 意思就是通过 GET 请求

curl_setopt($oCurl, CURLOPT_POST, false);

$sContent = curl_exec($oCurl);

// 获得响应结果里的:头大小

$headerSize = curl_getinfo($oCurl, CURLINFO_HEADER_SIZE);

// 根据头大小去获取头信息内容

$header = substr($sContent, 0, $headerSize);

    

curl_close($oCurl);

return $header;

}

如上面解析,我们可以成功获得到头信息:

HTTP/1.1 302 Found

Date: Fri, 27 Jun 2014 02:47:35 GMT

Server: Apache

Location: http://www.edeng.cn/s/chuna/

Cache-Control: max-age=86400

Expires: Sat, 28 Jun 2014 02:47:35 GMT

Connection: Keep-Alive

Content-Type: text/html; charset=iso-8859-1

这时候,如果我们想获得 Location  项的内容,可以先把上面头正文件按回车换行切割成数组,然后再遍历匹配,如:

$responseHead = post_head($baiduUrl);

$headArr = explode("\r\n", $responseHead);

foreach ($headArr as $loop) {

if(strpos($loop, "Location") !== false){

$edengUrl = trim(substr($loop, 10));

print_r($edengUrl);


}

}


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
数据库工程师
手记
粉丝
52
获赞与收藏
361

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

举报

0/150
提交
取消