php常用函数
Posted 天 梦
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php常用函数相关的知识,希望对你有一定的参考价值。
通过curl发起请求
/** * 通过curl发起请求 * @param string $url 发送的url * @param array $data 发送的数据 * @return mixed */ function curlRequest($url, $data = null) { $curl = curl_init();//初始化curl curl_setopt($curl, CURLOPT_URL, $url);//需要获取的URL地址 curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);//禁止cURL验证对等证书 curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);//不检查SSL证书名称 if (!empty($data)) { curl_setopt($curl, CURLOPT_POST, 1);//发送POST请求 curl_setopt($curl, CURLOPT_POSTFIELDS, $data);//发送POST数据 } curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);//获取的信息以字符串返回 curl_setopt($curl, CURLOPT_TIMEOUT, 180);//设置请求超时时间为3分钟 $output = curl_exec($curl); curl_close($curl); return $output; }
获取客户端IP地址
/** * 获取客户端IP地址 * @param integer $type 返回类型 0 返回IP地址 1 返回IPV4地址数字 * @param boolean $adv 是否进行高级模式获取(有可能被伪装) * @return mixed */ function getClientIp($type = 0, $adv = false) { $type = $type ? 1 : 0; static $ip = NULL; if ($ip !== NULL) return $ip[$type]; if ($adv || isset($_SERVER[‘HTTP_X_REAL_FORWARDED_FOR‘])) { if (isset($_SERVER[‘HTTP_X_REAL_FORWARDED_FOR‘])) { $ip = $_SERVER[‘HTTP_X_REAL_FORWARDED_FOR‘]; } elseif (isset($_SERVER[‘HTTP_CLIENT_IP‘])) { $ip = $_SERVER[‘HTTP_CLIENT_IP‘]; } elseif (isset($_SERVER[‘REMOTE_ADDR‘])) { $ip = $_SERVER[‘REMOTE_ADDR‘]; } } elseif (isset($_SERVER[‘REMOTE_ADDR‘])) { $ip = $_SERVER[‘REMOTE_ADDR‘]; } // IP地址合法验证 $long = sprintf("%u", ip2long($ip)); $ip = $long ? array($ip, $long) : array(‘0.0.0.0‘, 0); return $ip[$type]; }
计算两经纬度之间的距离
/** * 计算两经纬度之间的距离 * @param $lat1 * @param $lng1 * @param $lat2 * @param $lng2 * @return float|int */ function getDistance($lat1, $lng1, $lat2, $lng2) { $EARTH_RADIUS = 6378.137; $rad_arr = array_map( function ($item) { return $item * 3.1415926535898 / 180.0; }, [$lat1, $lng1, $lat2, $lng2] ); $a = $rad_arr[0]-$rad_arr[2]; $b = $rad_arr[1]-$rad_arr[3]; $s = 2*asin(sqrt(pow(sin($a/2), 2)+cos($rad_arr[0])*cos($rad_arr[2])*pow(sin($b/2), 2))); $s = $s*$EARTH_RADIUS*1000; $s = round($s * 10000) / 10000; return $s; }
将数据表导出成csv格式文件并下载
/** * 将数据表导出成csv格式文件并下载 * @param array $data:要导出的数据 * @param array $del:不导出的字段名,指定的字段数据不被导出 * @param string $head:表头字段名,以逗号隔开,将在导出的 CSV 文件第一行显示 * @param string $save:下载时保存的文件名前缀,不含后缀,系统会在前缀后加上下载日期和文件扩展名,如定义:questions,保存时的文件名为:questions_20140108.csv * @param string $coding:保存的字符编码,目标字符编码 * @return bool */ function data2csv($data = array(), $del = array(), $head = ‘‘, $save = ‘‘, $coding = ‘gbk‘) { $tmpfile = ROOT_PATH.‘/tempimg/data2excel_‘.time().mt_rand().‘.csv‘;//生成导出的CSV文件,临时保存路径,随机字串,防止被下载 @setlocale(LC_ALL, ‘zh_CN‘); if ($fp = @fopen($tmpfile, ‘w‘)) { @fputcsv($fp, explode(‘,‘, iconv(‘utf-8‘, $coding, $head))); foreach ($data as $n) { foreach ((array)$del as $d) {//删除不导出的字段 unset($n[$d]); } foreach ($n as &$p) {//编码转换 $p = iconv(‘utf-8‘, $coding, $p); } @fputcsv($fp, $n); } @fclose($fp); ob_end_clean(); header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header(‘Content-Description: File Transfer‘); header(‘Content-Type: application/octet-stream‘); @header(‘Content-Length: ‘.filesize($tmpfile)); header(‘Content-Disposition: attachment; filename=‘.$save.‘_‘.date(‘Y_m_d_H_i_s‘).‘.csv‘); @readfile($tmpfile); @unlink($tmpfile); die(); // 必须结束 }else{ return false; // 写入文件失败 } }
以上是关于php常用函数的主要内容,如果未能解决你的问题,请参考以下文章