php 模拟get_headers函数的代码示例

代码如下:

<?php

02 if(!function_exists('get_headers')){

03     function get_headers($url,$format=0){

04         $url=parse_url($url);

05         $end="\r\n\r\n";

06         $fp=fsockopen($url['host'],(empty($url['port'])?80:$url['port']),$errno,$errstr,30);

07         if($fp){

08             $out="GET / HTTP/1.1\r\n";

09             $out.="Host: ".$url['host']."\r\n";

10             $out.="Connection: Close\r\n\r\n";

11             $var='';

12             fwrite($fp,$out);

13             while(!feof($fp)){

14                 $var.=fgets($fp,1280);

15                 if(strpos($var,$end))

16                 break;

17             }

18             fclose($fp);

19             $var=preg_replace("/\r\n\r\n.*\$/",'',$var);

20             $var=explode("\r\n",$var);

21             if($format){

22                 foreach($var as $i){

23                     if(preg_match('/^([a-zA-Z -]+): +(.*)$/',$i,$parts))

24                     $v[$parts[1]]=$parts[2];

25                 }

26                 return $v;

27             }else{

28                 return $var;

29             }

30         }

31     }

32 }

33 echo '<pre>';

34 print_r(get_headers('http://www.jb51.net'));

(0)

相关推荐

  • PHP getallheaders无法获取自定义头(headers)的问题

    在客户端请求的时候增加了自定义的http头,请求如下所示: 自定义http请求头 var_dump(getallheaders); 一开始通过getallheaders参数获取,但是发现在nginx部署的服务器上获取不到,非常奇怪,查看php手册发现getallheaders这个函数只支持apache服务器.于是找到兼容的方法: if (!function_exists('getallheaders')) { function getallheaders() { $headers = array

  • php中get_headers函数的作用及用法的详细介绍

    get_headers() 是PHP系统级函数,他返回一个包含有服务器响应一个 HTTP 请求所发送的标头的数组.如果失败则返回 FALSE 并发出一条 E_WARNING 级别的错误信息(可用来判断远程文件是否存在). 函数定义 array get_headers ( string $url [, int $format = 0 ] ) 参数 url 目标 URL format 如果将可选的 format 参数设为 1,则 get_headers() 会解析相应的信息并设定数组的键名. 示例

  • PHP错误Warning: Cannot modify header information - headers already sent by解决方法

    今天在测试以下代码时遇到该错误: 复制代码 代码如下: session_start(); $_SESSION['username']=$username; echo "<script language='javascript'>location.href='../admin.php';</script>"; exit(); 出现错误: 复制代码 代码如下: Warning: Cannot modify header information - headers a

  • PHP提示Cannot modify header information - headers already sent by解决方法

    本文实例讲述了PHP提示Cannot modify header information - headers already sent by解决方法,是进行PHP程序设计过程中经常会遇到的问题.本文对此以实例形式分析解决方法.分享给大家供大家参考.具体方法如下: 现来看看这段代码: <?php ob_start(); setcookie("username","test",time()+3600); echo "the username is:&qu

  • PHP使用get_headers函数判断远程文件是否存在的方法

    本文实例讲述了PHP使用get_headers函数判断远程文件是否存在的方法.分享给大家供大家参考.具体实现方法如下: 以前讲过程关于php判断远程文件是否存在的文章都是利用fopen,sockt,curl函数来实现检查远程文件是否存在,下面我再介绍利用 get_headers来检查远程文件是否存在,感兴趣的朋友可以参考一下. 先来简单了解get_headers()函数 get_headers() 返回一个数组m包含有服务器响应一个 HTTP 请求所发送的标头. get_headers:发送服务

  • php session_start()关于Cannot send session cache limiter - headers already sent错误解决方法

    说是已经有输出,用编辑器打,前面明明什么都没有,原来在使用AJAX的 时候,也出现过这种情况,后来,把这个PHP文件放到linux中打开,会发现,在文件的最前面,会出现"锘 "这样的一个字符(引号内),把它去掉以后,再运行,OK,运行正常.后来在网上搜索一些文件,给的解释是:UTF8文件的BOM(Byte Order Mark)标志,在保存的时候会自动存入! 不管它是干嘛的,现在的目的就是把它去掉,我总结的方法有下面三种: 1. 在Linux下打开,去掉后再保存 2. 用写字板打开,把

  • 使用php get_headers 判断URL是否有效的解决办法

    在php中判断一个文件或目录是否存在,大家通常都会想到is_file和file_exists两个函数.但这两个函数再判断一个远程url文件是否存在的问题上还是会存在这样那样的问题.这里作者将和大家分享一种利用php get_headers函数来判断远程url文件是有效否存在的办法. 关于php get_headers函数的作用及用法,可以参考本站文章: php中get_headers函数的作用及用法的详细介绍下面来具体说如何利用php get_headers却判断url的真实有效性. 通过该函数

  • PHP实现的带超时功能get_headers函数

    代码比较多,但是比较简单,一眼就看穿的,so,文字尽量少写了. 因为众所周知的网络原因,gavatar也开始越来越慢,写了一个小东西来解决这个问题,过程中遇到了get_headers这个函数,甚是忧伤,记录下来,以免后来人踩坑. 更新记录,函数稍微改了一下,返回值基本和之前序列化后的结果一致,暂时没考虑支持子项也支持数组等(考虑细节性能,还想把没用的http头砍掉-.) 需求很简单:获取图片的head信息. 调试程序的时候发现这个函数的调用很缓慢,即使绑定ip,有时候都能蹦到20多秒. 寻思这个

  • php 模拟get_headers函数的代码示例

    复制代码 代码如下: <?php 02 if(!function_exists('get_headers')){ 03     function get_headers($url,$format=0){ 04         $url=parse_url($url); 05         $end="\r\n\r\n"; 06         $fp=fsockopen($url['host'],(empty($url['port'])?80:$url['port']),$er

  • Python中join函数简单代码示例

    本文简述的是string.join(words[, sep]),它的功能是把字符串或者列表,元组等的元素给拼接起来,返回一个字符串,和split()函数与正好相反,看下面的代码理解. 首先展示下结果吧! 代码分享: a=["豫","N","C8","C89"] b=("豫","N","C8","C89") c="zhang" a

  • C语言模拟实现密码输入的示例代码

    目录 引言 思路分析 代码实现 代码分析 引言 登录账号时我们要输入密码,密码输入错误时会提示密码错误.有时密码的输入次数会被限制,例如银行卡,当我们3次密码都输入错误时卡会被冻结.下面用C语言模拟实现密码输入. 思路分析 首先要确立一个正确密码,再确定密码输入限制次数,接着用一个scanf语句读取用户输入的密码.将用户输入的密码和先前确定的密码进行比较,如果密码输入正确就显示密码正确,如果密码输入错误就提示密码错误,并告诉用户还有几次输入机会. 代码实现 #include<stdio.h>

  • C++中const用于函数重载的示例代码

    常成员函数和非常成员函数之间的重载 首先先回忆一下常成员函数 声明:<类型标志符>函数名(参数表)const: 说明: (1)const是函数类型的一部分,在实现部分也要带该关键字. (2)const关键字可以用于对重载函数的区分. (3)常成员函数不能更新类的成员变量,也不能调用该类中没有用const修饰的成员函数,只能调用常成员函数. (4)非常量对象也可以调用常成员函数,但是如果有重载的非常成员函数则会调用非常成员函数. 重载看例子: #include<iostream> u

  • jQuery函数的等价原生函数代码示例

    我们针对常用的jQuery方法以及其等价原生方法的性能做了一些测试(1, 2, 3). 我知道你在想什么.原生方法明显要比jQuery方法快,因为jQuery方法要处理浏览器兼容以及其他一些事情.是的,我完全赞成.写这篇文章并不是出于反对使用jQuery,但如果你针对的是现代浏览器,那么使用原生方法会使性能有很大的提升. 许多开发者没有意识到大多数他们使用的jQuery方法可以使用原生方法,或者更轻量级的方法来代替.下面是一些代码示例,展示一些常用的jQuery方法,以及其等价原生方法. 译者注

  • IO中flush()函数的使用代码示例

    The java.io.Writer.flush() method flushes the stream. If the stream has saved any characters from the various write() methods in a buffer, write them immediately to their intended destination. Then, if that destination is another character or byte st

  • Selenium之模拟登录铁路12306的示例代码

    最近接触了一些selenium模块的相关知识,觉得还挺有意思的,于是决定亲自尝试写一些爬虫程序来强化selenium模块(一定要多尝试.多动手.多总结).本文主要使用python爬虫来模拟登录铁路12306官网.这儿得吐槽一句,铁路12306网站的反爬机制做的还是比较好. 话不多说,下面跟小墨一起来学习如何通过爬虫来实现铁路12306的登录. 一. 验证码破解 当我们输入账号和密码后,在点击登录按钮之前,还需要对验证码进行操作.对验证码的识别,已经有相关的处理平台,我们只需要借助第三方平台即可.

  • python 模拟登录B站的示例代码

    需要将模拟的浏览器,添加到环境变量中哦.代码中用的是chrome from selenium import webdriver from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By from selenium.webdriv

  • Android的八种对话框的实现代码示例

    1.写在前面 Android提供了丰富的 Dialog 函数,本文介绍最常用的8种对话框的使用方法,包括普通(包含提示消息和按钮).列表.单选.多选.等待.进度条.编辑.自定义等多种形式,将在第2部分介绍. 有时,我们希望在对话框创建或关闭时完成一些特定的功能,这需要复写 Dialog的create().show().dismiss()等方法,将在第3部分介绍. 2.代码示例 2.1 普通Dialog(图1与图2) 2个按钮 public class MainActivity extends A

  • Python使用matplotlib填充图形指定区域代码示例

    本文代码重点在于演示Python扩展库matplotlib.pyplot中fill_between()函数的用法. import numpy as np import matplotlib.pyplot as plt # 生成模拟数据 x = np.arange(0.0, 4.0*np.pi, 0.01) y = np.sin(x) # 绘制正弦曲线 plt.plot(x, y) # 绘制基准水平直线 plt.plot((x.min(),x.max()), (0,0)) # 设置坐标轴标签 pl

随机推荐