php curl 分离header和body信息
php中可以通过curl来模拟http请求,同时可以获取http response header和body,当然也设置参数可以只获取其中的某一个。当设置同时获取response header和body时候,它们会一同作为结果返回。这时需要我们自己来分离它们。
下面代码是模拟向google一个http GET请求
代码如下 | 复制代码 |
function httpGet() { $ch = curl_init(); $result = curl_exec($ch); if (curl_getinfo($ch, CURLINFO_HTTP_CODE) == '200') { return NULL; |
调用上述方法后看到如下类似输出:
HTTP/1.1 200 OK
Date: Tue, 09 Jul 2013 14:21:08 GMT
Expires: -1
Cache-Control: private, max-age=0
Content-Type: text/html; charset=UTF-8
Set-Cookie: PREF=ID=75e996a7ad21f47b:FF=0:NW=1:TM=1373379668:LM=1373379668:S=TTLQQN-jwGDYnkkY; expires=Thu, 09-Jul-2015 14:21:08 GMT; path=/; domain=.google.com.hk
Set-Cookie: NID=67=PPu7FfFeuZqwfsrUifgzjidX4JZxxCPLe9xFHjdXhfHpzs3gaykFSH5uGXy2esWTlp_rdqIYkjFDMollzI_sA-8owxD3mDh6KCRwdMa9-g5VChj0E5XAGNjo9d-sZfLN; expires=Wed, 08-Jan-2014 14:21:08 GMT; path=/; domain=.google.com.hk; HttpOnly
P3P: CP="This is not a P3P policy! See http://www.google.com/support/accounts/bin/answer.py?hl=en&answer=151657 for more info."
Server: gws
X-XSS-Protection: 1; mode=block
X-Frame-Options: SAMEORIGIN
Transfer-Encoding: chunked
<!doctype html><html itemscope="itemscope" itemtype="http://schema.org/WebPage"><head><meta itemprop="image" content="/images/google_favicon_128.png"><title>Google</title><script>(function(){
window.google={kEI:"VBzcUdWuHOmtiQf64IHoCw",getEI:function(a){for(var b;a&&(!a.getAttribute||!(b=a.getAttribute("eid")));
……
这里可以看到结果中header和body信息是在一起的,那么如何分离它们呢。方法有二种,一是通过curl自带的curl_getinfo()方法获取头的长度,然后使用substr来分割字符串。示例代码如下:
代码如下 | 复制代码 |
$response = curl_exec($ch); if (curl_getinfo($ch, CURLINFO_HTTP_CODE) == '200') { |
第二种方法基于header和body是通过两个回车换行来分割的,所以可以通过如下代码实现:
代码如下 | 复制代码 |
$response = curl_exec($ch); if (curl_getinfo($ch, CURLINFO_HTTP_CODE) == '200') { |
借助于date和strtotime函数,可以轻松的获取本月、下月以及上月的第一天和最后一天,下面分别给出其实现。其中函数的参数date格式为yyyy-MM-dd。
1、给定一个日期,获取其本月的第一天和最后一天
代码如下 | 复制代码 |
function getCurMonthFirstDay($date) { function getCurMonthLastDay($date) { |
2、给定一个日期,获取其下月的第一天和最后一天
代码如下 | 复制代码 |
function getNextMonthFirstDay($date) { function getNextMonthLastDay($date) { |
3、给定一个日期,获取其下月的第一天和最后一天
代码如下 | 复制代码 |
function getPrevMonthFirstDay($date) { function getPrevMonthLastDay($date) { |
其中strtotime函数参数"+1 month",php会根据具体月份来确定增加多少天,可能是28、29(2月)、30(小月)或 31(大月);某月的第一天 "-1 day" 自然就是上个月最后一天,php也会根据月来智能确定是28、29、30或31。
strtotime — 将任何英文文本的日期时间描述解析为 Unix 时间戳
Report a bug 说明
int strtotime ( string $time [, int $now = time() ] )
本函数预期接受一个包含美国英语日期格式的字符串并尝试将其解析为 Unix 时间戳(自 January 1 1970 00:00:00 GMT 起的秒数),其值相对于 now 参数给出的时间,如果没有提供此参数则用系统当前时间。
在处理大批量excel数据到mysql数据库时,用php自带的fgetcsv函数先从csv文件中逐行获取数据,再配合sql语句导入数据库,如果遇到了乱码问题,可以使用iconv函数进行转码。
代码示例:
代码如下 | 复制代码 |
<?php |
导入mysql时中文乱码
用网上通用的方法读取并上传csv文件内容进入mysql数据库中时,中文显示乱码,即使对数据用iconv函数转码后仍然乱码,这时可以用setlocale()函数:
这个函数经查阅是配置地域信息用的,在读取和写入csv数据前先用此函数进行定义,比如我的csv文件是无BOM的UTF-8格式,就先用如下函数进行定义:
代码如下 | 复制代码 |
setlocale(LC_ALL, 'zh_CN.UTF8′); |
然后再用iconv函数对数据内容进行转码入库等后续操作。
获取浏览器版本在php中直接使用HTTP_USER_AGENT就可以了,但是要具体判断是那个浏览器,什么版本我们需要一个个去判断了,例1
代码如下 | 复制代码 |
function get_user_browser() { $agent = $_SERVER['HTTP_USER_AGENT']; if (preg_match('/MSIEs([^s|;]+)/i', $agent, $regs)) { if (!empty($browser)) { |
实例
代码如下 | 复制代码 |
function get_user_browser() $agent = $_SERVER['HTTP_USER_AGENT']; if (preg_match('/MSIEs([^s|;]+)/i', $agent, $regs)) if (!empty($browser))
function is_spider($record = true) //判断是否为蜘蛛 if ($spider !== NULL) if (empty($_SERVER['HTTP_USER_AGENT'])) return ''; $searchengine_bot = array( $searchengine_name = array( $spider = strtolower($_SERVER['HTTP_USER_AGENT']); //将用户浏览器信息转成小写 foreach ($searchengine_bot AS $key => $value) return $spider; $spider = ''; return ''; |
实例
代码如下 | 复制代码 |
<?php |
函数返回图片下载完后保存的名字,那么只需在数据库中存储 图片目录+图片名即可。
相关文章
- 这篇文章主要介绍了Vue基于localStorage存储信息代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-11-16
- 这篇文章主要介绍了Element PageHeader页头的使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-07-27
C#利用System.Threading.Thread.Sleep即时输出信息的详解
本篇文章是对C#利用System.Threading.Thread.Sleep即时输出信息进行了详细的分析介绍,需要的朋友参考下...2020-06-25- Redis 是一个开源、高性能的Key-Value数据库,被广泛应用在服务器各种场景中。本文介绍几个查看Redis内存信息的命令,包括常用的info memory、info keyspace、bigkeys等。...2021-01-15
- 这篇文章主要介绍了C# 获取硬盘号,CPU信息,加密解密技术的步骤,帮助大家更好的理解和学习c#,感兴趣的朋友可以了解下...2021-01-16
- 网站被K后,笔者做的第一件事便是在网站上增加更新模块。百度算法更新,对于网站内容给予了相当大的权重,这是笔者网站最欠缺的部分,保证了及时的更新便有了吸引蜘蛛爬取的...2016-10-10
- 本篇文章主要介绍了详解前后端分离之VueJS前端,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧 ...2017-05-27
PHP中header()函数有什么用?常见header 状态
在php中header()函数是很大的作用可以发送各种状态代码,也可以实现一些输出下载,下面我们一起来看看一些相关实例吧。 什么是头信息? 这里只作简单解释,详细的自己看...2016-11-25- 这篇文章主要介绍了解决Feign获取异常信息的处理方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-08-27
- 这篇文章主要介绍了ssm+vue前后端分离框架整合实现(附源码),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-07-09
- 这篇文章主要介绍了使用BindingResult 自定义错误信息,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-10-23
- 这篇文章主要介绍了C#获取客户端相关信息的方法,以实例形式总结了C#获取客户端IP地址、网络连接、硬件信息等相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
- 这篇文章主要介绍了C#推送信息到APNs的方法,涉及C#推送通知到苹果APNs的实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
解决springboot利用ConfigurationProperties注解配置数据源无法读取配置信息问题
今天在学习springboot利用ConfigurationProperties注解配置数据源的使用遇到一个问题无法读取配置信息,发现全部为null,纠结是哪里出了问题呢,今天一番思考,问题根源找到,下面把我的解决方案分享到脚本之家平台,感兴趣的朋友一起看看吧...2021-05-30- 本篇文章主要介绍了Vue之前端体系与前后端分离,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2021-10-26
- / 代码如下 复制代码 * 一、本程序基于div+css教程 新型架构php探针,免费开源的自由软件,功能强大,结构清晰,使用方便。 1.支持windows,linux,uni...2016-11-25
- 这篇文章主要介绍了c# 获取计算机硬件信息的示例代码,帮助大家更好的理解和学习c#,感兴趣的朋友可以了解下...2020-12-08
- 这篇文章主要介绍了c++获取进程信息列表和进程所调用的dll列表,大家参考使用吧...2020-04-25
SpringBoot+Mybatis-Plus实现mysql读写分离方案的示例代码
这篇文章主要介绍了SpringBoot+Mybatis-Plus实现mysql读写分离方案的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-09- 问:我需要在运行SQL Server的机器上定期收集诸如每秒处理事务数(tps)之类的统计信息。为此,我大量使用了Performance Monitor(性能监视器),但却不能得到DBA所需的SQL Server...2016-11-25