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'));
相关推荐
-
PHP实现的带超时功能get_headers函数
代码比较多,但是比较简单,一眼就看穿的,so,文字尽量少写了. 因为众所周知的网络原因,gavatar也开始越来越慢,写了一个小东西来解决这个问题,过程中遇到了get_headers这个函数,甚是忧伤,记录下来,以免后来人踩坑. 更新记录,函数稍微改了一下,返回值基本和之前序列化后的结果一致,暂时没考虑支持子项也支持数组等(考虑细节性能,还想把没用的http头砍掉-.) 需求很简单:获取图片的head信息. 调试程序的时候发现这个函数的调用很缓慢,即使绑定ip,有时候都能蹦到20多秒. 寻思这个
-
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中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 getallheaders无法获取自定义头(headers)的问题
在客户端请求的时候增加了自定义的http头,请求如下所示: 自定义http请求头 var_dump(getallheaders); 一开始通过getallheaders参数获取,但是发现在nginx部署的服务器上获取不到,非常奇怪,查看php手册发现getallheaders这个函数只支持apache服务器.于是找到兼容的方法: if (!function_exists('getallheaders')) { function getallheaders() { $headers = array
-
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 get_headers 判断URL是否有效的解决办法
在php中判断一个文件或目录是否存在,大家通常都会想到is_file和file_exists两个函数.但这两个函数再判断一个远程url文件是否存在的问题上还是会存在这样那样的问题.这里作者将和大家分享一种利用php get_headers函数来判断远程url文件是有效否存在的办法. 关于php get_headers函数的作用及用法,可以参考本站文章: php中get_headers函数的作用及用法的详细介绍下面来具体说如何利用php get_headers却判断url的真实有效性. 通过该函数
-
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函数的代码示例
复制代码 代码如下: <?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
随机推荐
- 如何将访问者数目周期性地保存?
- 关于Ext中form移除textfield方法:hide(),setVisible(false),remove()
- 基于jQuery实现网页进度显示插件
- Exitjs获取DataView中图片文件名
- Vue.js之slot深度复制详解
- JavaScript排序算法之希尔排序的2个实例
- eWebEditorNet漏洞利用思路
- 原生js jquery ajax请求以及jsonp的调用方法
- 基于jquery+thickbox仿校内登录注册框
- 关于Appserv无法打开localhost问题的解决方法
- MySQL 5.6 & 5.7最优配置文件模板(my.ini)
- MySQL Proxy的安装及基本命令使用教程
- JS实现仿Windows经典风格的选项卡Tab切换代码
- 很全的显示阴历(农历)日期的js代码
- 如何使用MySQL查询某个列中相同值的数量统计
- JS旋转的彩色文字轮转特效
- js 操作符汇总
- Easypanel免费的VPS主机面板 可跨平台Linux和Windows
- Java 高并发七:并发设计模型详解
- 关于在C程序中处理UTF-8文本的方法详解