PHP封装curl的调用接口及常用函数详解


Posted in PHP onMay 31, 2018

如下所示:

<?php
	/**
	 * @desc 封装curl的调用接口,post的请求方式
	 */
	function doCurlPostRequest($url, $requestString, $timeout = 5) { 
		if($url == "" || $requestString == "" || $timeout <= 0){
			return false;
		}
		 $con = curl_init((string)$url);
	 curl_setopt($con, CURLOPT_HEADER, false);
	 curl_setopt($con, CURLOPT_POSTFIELDS, $requestString);
	 curl_setopt($con, CURLOPT_POST, true);
	 curl_setopt($con, CURLOPT_RETURNTRANSFER,true);
	 curl_setopt($con, CURLOPT_TIMEOUT, (int)$timeout);
		curl_setopt($con, CURLOPT_SSL_VERIFYPEER, false);
		curl_setopt($con, CURLOPT_SSL_VERIFYHOST, false);
	 return curl_exec($con);
	}
	
	/**
	 * @desc 封装curl的调用接口,post的请求方式
	 */
	function doCurlPostsslRequest($url, $requestString,$pemfile, $timeout = 5) { 
		if($url == "" || $requestString == "" || $timeout <= 0){
			return false;
		}
		
		echo $pemfile;
		 $con = curl_init((string)$url);
	 curl_setopt($con, CURLOPT_HEADER, false);
	 curl_setopt($con, CURLOPT_POSTFIELDS, $requestString);
	 curl_setopt($con, CURLOPT_POST, true);
	 curl_setopt($con, CURLOPT_RETURNTRANSFER,true);
	 curl_setopt($con, CURLOPT_TIMEOUT, (int)$timeout);
		curl_setopt($con, CURLOPT_SSL_VERIFYPEER, 1);
		curl_setopt($con, CURLOPT_SSL_VERIFYHOST, 2);
		//curl_setopt($ch, CURLOPT_SSLCERT, $pemfile); 
		//curl_setopt($ch, CURLOPT_SSLCERTTYPE, 'PEM');
		curl_setopt($con, CURLOPT_CAINFO, $pemfile);
	 return curl_exec($con);
	} 
	/**
	 * @desc 封装curl的调用接口,post Json数据的请求方式
	 */
	function doCurlPostJsonReq($url, $requestString, $timeout = 25){
		if($url == "" || $requestString == "" || $timeout <= 0){
			return false;
		}
	 $con = curl_init((string)$url);
	 curl_setopt($con, CURLOPT_HEADER, false);
	 curl_setopt($con, CURLOPT_POSTFIELDS, $requestString);
	 curl_setopt($con, CURLOPT_POST, true);
	 curl_setopt($con, CURLOPT_RETURNTRANSFER,true);
	 curl_setopt($con, CURLOPT_TIMEOUT, (int)$timeout);	
		curl_setopt($con, CURLOPT_HTTPHEADER, array(
			'Content-Type: application/json',
			'Content-Length: ' . strlen($data_string))
		);
	 return curl_exec($con);
	}
	/**
	 * @desc 封装curl的调用接口,post form数据的请求方式
	 */
	function doCurlPostFormReq($url, $requestString, $timeout = 25){
		if($url == "" || $requestString == "" || $timeout <= 0){
			return false;
		}
	 $con = curl_init((string)$url);
	 curl_setopt($con, CURLOPT_HEADER, false);
	 curl_setopt($con, CURLOPT_POSTFIELDS, $requestString);
	 curl_setopt($con, CURLOPT_POST, true);
	 curl_setopt($con, CURLOPT_RETURNTRANSFER,true);
	 curl_setopt($con, CURLOPT_TIMEOUT, (int)$timeout);	
		curl_setopt($con, CURLOPT_HTTPHEADER, array(
			'Content-Type: application/x-www-form-urlencoded')
		);
	 return curl_exec($con);
	}
	/**
	 * @desc 封装curl的调用接口,get的请求方式
	 */
	function doCurlGetRequest($url, $data = array(), $timeout = 10) {
		if($url == "" || $timeout <= 0){
			return false;
		}
		if($data != array()) {
			$url = $url . '?' . http_build_query($data);
		}
		Log::write("发送URL[".$url."]");
		$con = curl_init((string)$url);
		curl_setopt($con, CURLOPT_HEADER, false);
		curl_setopt($con, CURLOPT_RETURNTRANSFER,true);
		curl_setopt($con, CURLOPT_TIMEOUT, (int)$timeout);
		curl_setopt($con, CURLOPT_SSL_VERIFYPEER, false);
		curl_setopt($con, CURLOPT_SSL_VERIFYHOST, false);
		return curl_exec($con);
	}
	/**
	 *截取字符串,中文无乱码
	*/
	function msubstr($str, $start=0, $length=0,$suffix=false,$charset="utf-8"){
	 if(mb_strlen($str,"UTF8") >= $length){
	  $next_str = "…";
	 }else{
	  $next_str = "";
	 }
	 if(function_exists("mb_substr")){
	  if($suffix)
	   // return mb_substr($str, $start, $length, $charset)."…";
	   return mb_substr($str, $start, $length, $charset).$next_str;
	  else
	   return mb_substr($str, $start, $length, $charset);
	 }elseif(function_exists('iconv_substr')) {
	  if($suffix)
	   // return iconv_substr($str,$start,$length,$charset)."…";
	   return iconv_substr($str,$start,$length,$charset).$next_str;
	  else
	   return iconv_substr($str,$start,$length,$charset);
	 }
	 $re['utf-8'] = "/[x01-x7f]|[xc2-xdf][x80-xbf]|[xe0-xef][x80-xbf]{2}|[xf0-xff][x80-xbf]{3}/";
	 $re['gb2312'] = "/[x01-x7f]|[xb0-xf7][xa0-xfe]/";
	 $re['gbk'] = "/[x01-x7f]|[x81-xfe][x40-xfe]/";
	 $re['big5'] = "/[x01-x7f]|[x81-xfe]([x40-x7e]|xa1-xfe])/";
	 preg_match_all($re[$charset], $str, $match);
	 $slice = join("",array_slice($match[0], $start, $length));
	  if($suffix) return $slice."…";
	 if(!$suffix) return $slice;
	 return $slice;
	}
	/**
	 *用户名*隐藏
	 *$str = "如来神掌";
	 *echo cut_str($str, 1, 0).'**'.cut_str($str, 1, -1);
	 *输出:如**掌
	*/
	function cut_str($string, $sublen, $start = 0, $code = 'UTF-8')
	{
	 if($code == 'UTF-8')
	 {
	  $pa = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|\xe0[\xa0-\xbf][\x80-\xbf]|[\xe1-\xef][\x80-\xbf][\x80-\xbf]|\xf0[\x90-\xbf][\x80-\xbf][\x80-\xbf]|[\xf1-\xf7][\x80-\xbf][\x80-\xbf][\x80-\xbf]/";
	  preg_match_all($pa, $string, $t_string);
	  if(count($t_string[0]) - $start > $sublen) return join('', array_slice($t_string[0], $start, $sublen));
	  return join('', array_slice($t_string[0], $start, $sublen));
	 }
	 else
	 {
	  $start = $start*2;
	  $sublen = $sublen*2;
	  $strlen = strlen($string);
	  $tmpstr = '';
	  for($i=0; $i< $strlen; $i++)
	  {
	   if($i>=$start && $i< ($start+$sublen))
	   {
	    if(ord(substr($string, $i, 1))>129)
	    {
	     $tmpstr.= substr($string, $i, 2);
	    }
	    else
	    {
	     $tmpstr.= substr($string, $i, 1);
	    }
	   }
	   if(ord(substr($string, $i, 1))>129) $i++;
	  }
	  //if(strlen($tmpstr)< $strlen ) $tmpstr.= "...";
	  return $tmpstr;
	 }
	}
	/*
	*解决json_encode转换中文的问题,在php5.4下json_encode本身解决的这个问题
	*/
	function unescapedUnicode($match)
	{
		return mb_convert_encoding(pack('H*', $match[1]), 'UTF-8', 'UCS-2BE');
	}
	/**
	*截取手机号
	*demo:13112345678
	*return:131****5678
	*/
	function hidtel($phone){
	 $IsWhat = preg_match('/(0[0-9]{2,3}[-]?[2-9][0-9]{6,7}[-]?[0-9]?)/i',$phone); //固定电话
	 if($IsWhat == 1){
	  return preg_replace('/(0[0-9]{2,3}[-]?[2-9])[0-9]{3,4}([0-9]{3}[-]?[0-9]?)/i','$1****$2',$phone);
	 }else{
	  return preg_replace('/(1[358]{1}[0-9])[0-9]{4}([0-9]{4})/i','$1****$2',$phone);
	 }
	}
	//获取IP
	function getIp()
	{
		if (isset($_SERVER)){
			if (isset($_SERVER["HTTP_X_FORWARDED_FOR"])){
				$realip = $_SERVER["HTTP_X_FORWARDED_FOR"];
			} else if (isset($_SERVER["HTTP_CLIENT_IP"])) {
				$realip = $_SERVER["HTTP_CLIENT_IP"];
			} else {
				$realip = $_SERVER["REMOTE_ADDR"];
			}
		} else {
			if (getenv("HTTP_X_FORWARDED_FOR")){
				$realip = getenv("HTTP_X_FORWARDED_FOR");
			} else if (getenv("HTTP_CLIENT_IP")) {
				$realip = getenv("HTTP_CLIENT_IP");
			} else {
				$realip = getenv("REMOTE_ADDR");
			}
		}
	
		return $realip;
	}
	//把汉字转换为数字
	function getUnicodeFromOneUTF8($word)
	{
		//获取其字符的内部数组表示,所以本文件应用utf-8编码! 
		//$word = iconv("gb2312", "utf-8", $word);
		if (is_array($word)) 
			$arr = $word; 
		else 
			$arr = str_split($word); 
		//此时,$arr应类似array(228, 189, 160) 
		//定义一个空字符串存储 
		$bin_str = ''; 
		//转成数字再转成二进制字符串,最后联合起来。 
		foreach ($arr as $value) 
			$bin_str .= decbin(ord($value)); 
		//此时,$bin_str应类似111001001011110110100000
		//正则截取 
		$bin_str = preg_replace('/^.{4}(.{4}).{2}(.{6}).{2}(.{6})$/','$1$2$3', $bin_str);
		//此时, $bin_str应类似0100111101100000,如果是汉字"你"
		return bindec($bin_str); 
		//返回类似20320, 汉字"你" 
		//return dechex(bindec($bin_str)); 
		//如想返回十六进制4f60,用这句

以上这篇PHP封装curl的调用接口及常用函数详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
PHP5中新增stdClass 内部保留类
Jun 13 PHP
PHP代码网站如何防范SQL注入漏洞攻击建议分享
Mar 01 PHP
浅析php与数据库代码开发规范
Aug 08 PHP
用php简单实现加减乘除计算器
Jan 06 PHP
php生成随机字符串可指定纯数字、纯字母或者混合的
Apr 18 PHP
PHP数据库操作之基于Mysqli的数据库操作类库
Apr 19 PHP
php无限分类使用concat如何实现
Nov 05 PHP
隐藏Nginx或Apache以及PHP的版本号的方法
Jan 03 PHP
Mac版PhpStorm之XAMPP整合apache服务器配置的图文教程详解
Oct 13 PHP
php常用字符串长度函数strlen()与mb_strlen()用法实例分析
Jun 25 PHP
tp5修改(实现即点即改)
Oct 18 PHP
Laravel 解决composer相关操作提示php相关异常的问题
Oct 23 PHP
PHP通过curl获取接口URL的数据方法
May 31 #PHP
php获得刚插入数据的id 的几种方法总结
May 31 #PHP
PHP+MySQL使用mysql_num_rows实现模糊查询图书信息功能
May 31 #PHP
PHP实现可精确验证身份证号码的工具类示例
May 31 #PHP
JSON PHP中,Json字符串反序列化成对象/数组的方法
May 31 #PHP
php curl获取到json对象并转成数组array的方法
May 31 #PHP
php插入mysql数据返回id的方法
May 31 #PHP
You might like
全国FM电台频率大全 - 11 浙江省
2020/03/11 无线电
Phpbean路由转发的php代码
2008/01/10 PHP
超级简单的php+mysql留言本源码
2009/11/11 PHP
php中的常用魔术方法总结
2013/08/02 PHP
php的闭包(Closure)匿名函数详解
2015/02/22 PHP
PHP实现的折半查找算法示例
2017/12/19 PHP
laravel-admin自动生成模块,及相关基础配置方法
2019/10/08 PHP
laravel框架数据库配置及操作数据库示例
2019/10/10 PHP
JS setCapture 区域外事件捕捉
2010/03/18 Javascript
判断是否安装flash player及当前版本的JS代码
2013/08/08 Javascript
JavaScript获取多个数组的交集简单实例
2013/11/11 Javascript
javasciprt下jquery函数$.post执行无响应的解决方法
2014/03/13 Javascript
基于Bootstrap使用jQuery实现简单可编辑表格
2016/05/04 Javascript
jQuery中each()、find()和filter()等节点操作方法详解(推荐)
2016/05/25 Javascript
一个超简单的jQuery回调函数例子(分享)
2016/08/08 Javascript
基于JavaScript实现本地图片预览
2017/02/08 Javascript
jquery实现下拉框左右选择功能
2017/02/21 Javascript
vue-cli+webpack在生成的项目中使用bootstrap实例代码
2017/05/26 Javascript
最通俗易懂的javascript变量提升详解
2017/08/05 Javascript
详解webpack + react + react-router 如何实现懒加载
2017/11/20 Javascript
使用vue-aplayer插件时出现的问题的解决
2018/03/02 Javascript
egg.js的基本使用和调用数据库的方法示例
2019/05/18 Javascript
微信小程序绑定手机号获取验证码功能
2019/10/22 Javascript
Bootstrap实现前端登录页面带验证码功能完整示例
2020/03/26 Javascript
基于vue实现探探滑动组件功能
2020/05/29 Javascript
[05:41]2014DOTA2西雅图国际邀请赛 小组赛7月10日TOPPLAY
2014/07/10 DOTA
python实现多线程采集的2个代码例子
2014/07/07 Python
rabbitmq(中间消息代理)在python中的使用详解
2017/12/14 Python
Python中的上下文管理器相关知识详解
2019/09/19 Python
python返回数组的索引实例
2019/11/28 Python
Win10用vscode打开anaconda环境中的python出错问题的解决
2020/05/25 Python
TobyDeals美国:在电子产品上获得最好的优惠和折扣
2019/08/11 全球购物
旅游个人求职信范文
2014/01/30 职场文书
老干部工作先进集体事迹材料
2014/05/21 职场文书
邀请函模板
2015/02/02 职场文书
MySQL日期时间函数知识汇总
2022/03/17 MySQL