php 常用函数

1. curl

/**
* php8.0 一下 不含8.0
* curl 合并get post方法
*/
function curlSend($url, $data = ''){
  $cl = curl_init();
  curl_setopt($cl, CURLOPT_URL, $url); 
  curl_setopt($cl, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($cl, CURLOPT_SSL_VERIFYPEER, false);
  curl_setopt($cl, CURLOPT_SSL_VERIFYHOST, false);
  if(! empty($data)){
    curl_setopt($cl, CURLOPT_POST, 1); 
    curl_setopt($cl, CURLOPT_POSTFIELDS, $data);
  }
  $output = curl_exec($cl);
  curl_close($cl);
  return $output;
}
/** php8.0 */
function curlSend($url,$data=''){
	//生成curl对象
	$curl = curl_init();
	curl_setopt($curl, CURLOPT_URL, $url);
	curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
	if(! empty($data)){
		curl_setopt($curl, CURLOPT_POST, 1);
		curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
	}
	return curl_exec($curl);
}
/**
* 获取ssl过期时间
*/
function curlSend($url){
        //生成curl对象
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 1);
        curl_setopt($curl, CURLOPT_CERTINFO, 1);
        //https://curl.se/ca/cacert.pem 下载*.pem文件
        curl_setopt($curl,CURLOPT_CAINFO,storage_path('app/').'/cacert.pem');
        curl_exec($curl);
        $certinfo = curl_getinfo($curl,CURLINFO_CERTINFO);
        return date('Y-m-d',strtotime($certinfo[0]['Expire date']));
    }

2. 读取xml

/**
 * @param string $xml 文件路径加名字或者xml字符串
 * @param array|string $tagName string:tagname,array:['tagname'=>item,'tagname'=>item];
 * @return array
 */
function readXml(string $xml,array|string $tagName):array
{
	$doc = new \DOMDocument();
	if(is_file($xml)){
		$doc->load($xml);
	}else{
		$doc->loadXML($xml);
	}
	$result = [];
	if(is_array($tagName)){
		foreach ($tagName as $name => $item){
			$key = $item == 0 ? $name : $name.'_'.$item;
			$result[$key] = $doc->getElementsByTagName($name)->item($item)->nodeValue;
		}
	}
	if(is_string($tagName))$result[$tagName] = $doc->getElementsByTagName($tagName)->item(0)->nodeValue;
	return $result;
}
/** 正则匹配 */
function readXml($xml,$xmlTag = ['RetCode', 'JobID']){
	$arr = [];
	foreach($xmlTag as $x) {
		preg_match_all("/<".$x.">.*<\/".$x.">/", $xml, $temp);
		$arr[] = $temp[0];
	}
	$data = [];
	foreach($arr as $key => $value) {
		foreach($value as $k => $v) {
			$a = explode($xmlTag[$key].'>', $v);
			$v = substr($a[1], 0, strlen($a[1])-2);
			$data[$k][$xmlTag[$key]] = $v;
		}
	}
	return $data;
}

3. 二维数组根据某个值排序

/**
 * 二维数组根据某个字段排序
 * @param array $array 要排序的数组
 * @param string $sortKey 要排序的键字段
 * @param string $sort 排序类型  SORT_ASC|SORT_DESC
 * @return array 排序后的数组
 */
function arraySort($array, $sortKey, $sort = SORT_DESC):array
{
	$sortValue = [];
	foreach ($array as $k => $v) {
		$sortValue[$k] = $v[$sortKey];
	}
	array_multisort($sortValue, $sort, $array);
	return $array;
}

4. 导出scv

public function export()
    {
        $users = User::query()
            ->where('type', 1)
            ->get()
            ->map(function (User $user) {
                return [
                    $user->mobile,
                    $user->created_at->toDateTimeString(),
                ];
            })->toArray();

        $fileName = '导出_' . now()->format('YmdHis') . '.csv';
        $path = storage_path('app/' . $fileName);
        $file = fopen($path, 'w');
        fwrite($file, chr(0xEF) . chr(0xBB) . chr(0xBF));
        fputcsv($file, [ '姓名', '注册时间']);
        $headers = [
            'Content-Type' => 'text/csv',
        ];
        foreach ($users as $user) {
            fputcsv($file, $user);
        }
        fclose($file);

        return response()->download($path, $fileName, $headers);
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值