博客列表 >php实用函数

php实用函数

夏日的烈风的博客
夏日的烈风的博客原创
2018年06月15日 09:08:37612浏览

<?php

/**

@param $arr

@param $key_name

@return array

将数据库中查出的列表以指定的 id 作为数组的键名 
*/

function convert_arr_key($arr, $key_name)
{

$arr2 = array();
foreach($arr as $key => $val){
   $arr2[$val[$key_name]] = $val;        
}
return $arr2;

}

/**

获取数组中的某一列

@param array $arr 数组

@param string $key_name 列名

@return array 返回那一列的数组
*/

function get_arr_column($arr, $key_name)
{

$arr2 = array();
foreach($arr as $key => $val){
   $arr2[] = $val[$key_name];        
}
return $arr2;

}

/**

获取url 中的各个参数 类似于 pay_code=alipay&bank_code=ICBC-DEBIT

@param type $str

@return type
*/

function parse_url_param($str){

$data = array();
$str = explode('?',$str);
$str = end($str);
$parameter = explode('&',$str);
foreach($parameter as $val){
   $tmp = explode('=',$val);
   $data[$tmp[0]] = $tmp[1];
}
return $data;

}

/**

多维数组转化为一维数组

@param 多维数组

@return array 一维数组
*/

function array_multi2single($array)
{

static $result_array = array();
foreach ($array as $value) {
   if (is_array($value)) {
       array_multi2single($value);
   } else
       $result_array [] = $value;
}
return $result_array;

}

/

// 递归删除文件夹
function delFile($path,$delDir = FALSE) {

if(!is_dir($path))
           return FALSE;        
$handle = @opendir($path);
if ($handle) {
   while (false !== ( $item = readdir($handle) )) {
       if ($item != "." && $item != "..")
           is_dir("$path/$item") ? delFile("$path/$item", $delDir) : unlink("$path/$item");
   }
   closedir($handle);
   if ($delDir) return rmdir($path);
}else {
   if (file_exists($path)) {
       return unlink($path);
   } else {
       return FALSE;
   }
}

}

/**

CURL请求

@param $url string 请求url地址

@param $method string 请求方法 get post

@param mixed $postfields post数据数组

@param array $headers 请求header信息

@param bool|false $debug 调试开启 默认false

@return mixed
*/

function httpRequest($url, $method="GET", $postfields = null, $headers = array(), $debug = false)
{

$method = strtoupper($method);
$ci = curl_init();
/* Curl settings */
curl_setopt($ci, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);
curl_setopt($ci, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.2; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0");
curl_setopt($ci, CURLOPT_CONNECTTIMEOUT, 60); /* 在发起连接前等待的时间,如果设置为0,则无限等待 */
curl_setopt($ci, CURLOPT_TIMEOUT, 7); /* 设置cURL允许执行的最长秒数 */
curl_setopt($ci, CURLOPT_RETURNTRANSFER, true);
switch ($method) {
   case "POST":
       curl_setopt($ci, CURLOPT_POST, true);
       if (!empty($postfields)) {
           $tmpdatastr = is_array($postfields) ? http_build_query($postfields) : $postfields;
           curl_setopt($ci, CURLOPT_POSTFIELDS, $tmpdatastr);
       }
       break;
   default:
       curl_setopt($ci, CURLOPT_CUSTOMREQUEST, $method); /* //设置请求方式 */
       break;
}
$ssl = preg_match('/^https:\/\//i', $url) ? TRUE : FALSE;
curl_setopt($ci, CURLOPT_URL, $url);
if ($ssl) {
   curl_setopt($ci, CURLOPT_SSL_VERIFYPEER, FALSE); // https请求 不验证证书和hosts
   curl_setopt($ci, CURLOPT_SSL_VERIFYHOST, FALSE); // 不从证书中检查SSL加密算法是否存在
}
//curl_setopt($ci, CURLOPT_HEADER, true); /*启用时会将头文件的信息作为数据流输出*/
curl_setopt($ci, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ci, CURLOPT_MAXREDIRS, 2);/*指定最多的HTTP重定向的数量,这个选项是和CURLOPT_FOLLOWLOCATION一起使用的*/
curl_setopt($ci, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ci, CURLINFO_HEADER_OUT, true);
/*curl_setopt($ci, CURLOPT_COOKIE, $Cookiestr); * *COOKIE带过去** */
$response = curl_exec($ci);
$requestinfo = curl_getinfo($ci);
$http_code = curl_getinfo($ci, CURLINFO_HTTP_CODE);
if ($debug) {
   echo "=====post data======\r\n";
   var_dump($postfields);
   echo "=====info===== \r\n";
   print_r($requestinfo);
   echo "=====response=====\r\n";
   print_r($response);
}
curl_close($ci);
return $response;
//return array($http_code, $response,$requestinfo);

}


上一条:linux 命令下一条:基于tp5的无限分类
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议