/** *获取当前网站域名 */ function getUrlBefore() { $http_type = ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') || (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')) ? 'https://' : 'http://'; return $http_type . $_SERVER['SERVER_NAME']; }
/** * 截取查询结果中的字段 * @param array $data 查询出来的结果集 * @param string $field 需要截取的字段 * @param string $copy_field 存入的新的字段名(不写默认存回原字段) * @param int $length 截取长度,默认10 * @param string $omit 省略的符号,默认 …… * @return array 返回截取成功的结果集 */ function cutField($data=array(),$field="",$copy_field="",$length=10,$omit="…"){ if (empty($data)){ return "请传入正确的数组"; } if (empty($field)){ return "请传入需要截取的字段"; } if (empty($copy_field)){ $copy_field=$field; } foreach ($data as &$v){ if (mb_strlen($v[$field],'utf-8')>$length){ $v[$copy_field]=mb_substr($v[$field],0,$length,'utf-8').$omit; } } return $data; }
/** * 生成随机码(默认六位) * 一般放在common中 * @param unknown $length 生成的随机码的长度 * @return string 返回随机码 */ function GetRand( $length = 6 ) { // 密码字符集,可任意添加你需要的字符 $chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; $password = ''; for ( $i = 0; $i < $length; $i++ ) { // 使用 substr 截取$chars中的任意一位字符; $password .= substr($chars, mt_rand(0, strlen($chars) - 1), 1); } return $password; }
/** * 颜色十六进制转化为rgb * 一般放在common中 */ function hColor2RGB($hexColor) { $color = str_replace('#', '', $hexColor); if (strlen($color) > 3) { $rgb = array( 'r' => hexdec(substr($color, 0, 2)), 'g' => hexdec(substr($color, 2, 2)), 'b' => hexdec(substr($color, 4, 2)) ); } else { $color = str_replace('#', '', $hexColor); $r = substr($color, 0, 1) . substr($color, 0, 1); $g = substr($color, 1, 1) . substr($color, 1, 1); $b = substr($color, 2, 1) . substr($color, 2, 1); $rgb = array( 'r' => hexdec($r), 'g' => hexdec($g), 'b' => hexdec($b) ); } return $rgb; }
/** * get请求 * @param $url 地址 * @return bool|string */ function get_url($url) { $curl = curl_init(); // header传送格式 $headers = array( "token:1111111111111", "over_time:22222222222", ); //设置访问的url地址 curl_setopt($curl, CURLOPT_URL, $url); // 不验证SSL curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0); // 将 curl_exec()获取的信息以文件流的形式返回,而不是直接输出。 curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 添加头信息 //curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); //添加cookie信息 curl_setopt($curl, CURLOPT_COOKIE, 'cookie_name=cookie_value;'); // 执行 $result = curl_exec($curl); //关闭连接 curl_close($curl); return $result; }
/** * POST请求 * @param string $url 地址 * @param string $data 提交的数据 * @return string 返回结果 */ function post_url($url, $data) { $curl = curl_init(); // 启动一个CURL会话 curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址 curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); // 对认证证书来源的检查 curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE); // 从证书中检查SSL加密算法是否存在 curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)'); // 模拟用户使用的浏览器 //curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转 //curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer curl_setopt($curl, CURLOPT_POST, 1); // 发送一个常规的Post请求 curl_setopt($curl, CURLOPT_POSTFIELDS, $data); // Post提交的数据包x curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制 防止死循环 curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容 curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回 $tmpInfo = curl_exec($curl); // 执行操作 if (curl_errno($curl)) { echo 'Errno' . curl_error($curl);//捕抓异常 } curl_close($curl); // 关闭CURL会话 return $tmpInfo; // 返回数据 }
/** * 执行shell脚本 * @param $shell shell脚本命令 * @param false $is_print 是否打印过程 */ function startshell($shell, $is_print = false) { if ($is_print) { //shell=》shell命令,status=》执行结果的状态,0为成功 echo "<pre>"; system($shell, $status); echo "</pre>"; } else { //shell=》shell命令,result=》执行结果的过程,status=》执行结果的状态,0为成功 exec($shell, $result, $status); } if ($status) { return false; } else { return true; } }
/** * 车牌号验证 * @param $license * @return bool */ function iscarid($license) { if (empty($license)) { return false; } //匹配民用车牌和使馆车牌 // 判断标准 // 1,第一位为汉字省份缩写 // 2,第二位为大写字母城市编码 // 3,后面是5位仅含字母和数字的组合 $regular = "/[京津冀晋蒙辽吉黑沪苏浙皖闽赣鲁豫鄂湘粤桂琼川贵云渝藏陕甘青宁新使]{1}[A-Z]{1}[0-9a-zA-Z]{5}$/u"; preg_match($regular, $license, $match); if (isset($match[0])) { return true; } //匹配特种车牌(挂,警,学,领,港,澳) //参考 https://wenku.baidu.com/view/4573909a964bcf84b9d57bc5.html $regular = '/[京津冀晋蒙辽吉黑沪苏浙皖闽赣鲁豫鄂湘粤桂琼川贵云渝藏陕甘青宁新]{1}[A-Z]{1}[0-9a-zA-Z]{4}[挂警学领港澳]{1}$/u'; preg_match($regular, $license, $match); if (isset($match[0])) { return true; } //匹配武警车牌 //参考 https://wenku.baidu.com/view/7fe0b333aaea998fcc220e48.html $regular = '/^WJ[京津冀晋蒙辽吉黑沪苏浙皖闽赣鲁豫鄂湘粤桂琼川贵云渝藏陕甘青宁新]?[0-9a-zA-Z]{5}$/ui'; preg_match($regular, $license, $match); if (isset($match[0])) { return true; } //匹配军牌 //参考 http://auto.sina.com.cn/service/2013-05-03/18111149551.shtml $regular = "/[A-Z]{2}[0-9]{5}$/"; preg_match($regular, $license, $match); if (isset($match[0])) { return true; } //匹配新能源车辆6位车牌 //参考 https://baike.baidu.com/item/%E6%96%B0%E8%83%BD%E6%BA%90%E6%B1%BD%E8%BD%A6%E4%B8%93%E7%94%A8%E5%8F%B7%E7%89%8C //小型新能源车 $regular = "/[京津冀晋蒙辽吉黑沪苏浙皖闽赣鲁豫鄂湘粤桂琼川贵云渝藏陕甘青宁新]{1}[A-Z]{1}[DF]{1}[0-9a-zA-Z]{5}$/u"; preg_match($regular, $license, $match); if (isset($match[0])) { return true; } //大型新能源车 $regular = "/[京津冀晋蒙辽吉黑沪苏浙皖闽赣鲁豫鄂湘粤桂琼川贵云渝藏陕甘青宁新]{1}[A-Z]{1}[0-9a-zA-Z]{5}[DF]{1}$/u"; preg_match($regular, $license, $match); if (isset($match[0])) { return true; } return false; }
/** * 两个时间戳之间的间隔天数,按照日期算 * @param $time1 * @param $time2 * @return mixed */ function interval_days($time1,$time2) { $cha = date_diff(date_create(date('Ymd', $time1)), date_create(date('Ymd', $time2))); return $cha->days; }
/** * PHP计算两个时间段交集时间 * @param int $beginTime1 开始时间1 * @param int $endTime1 结束时间1 * @param int $beginTime2 开始时间2 * @param int $endTime2 结束时间2 * @return int */ function is_time_cross($beginTime1 = 0, $endTime1 = 0, $beginTime2 = 0, $endTime2 = 0) { //////////剔除没有交集的情况,在一段时间的两侧情况 if (($beginTime1 < $beginTime2 && $endTime1 = $endTime2 && $endTime1 > $endTime2)) { return 0; } /////////假设一段时间在另一段时间之内的情况 //当time2完全在time1的范围内时 if ($beginTime2 >= $beginTime1 && $endTime2 = $beginTime2 && $endTime1 <= $endTime2) { return $endTime1 - $beginTime1; } /////////假设一段时间在另一段时间开始或结尾处 //当time1范围在$beginTime2范围左右时 if ($beginTime1 < $beginTime2 && $endTime1 > $beginTime2) { return $endTime1 - $beginTime2; } //当time1范围在$endTime2范围左右时 if ($beginTime1 < $endTime2 && $endTime2 < $endTime1) { return $endTime2 - $beginTime1; } //当time2范围在$beginTime1范围左右时 if ($beginTime2 < $beginTime1 && $endTime2 > $beginTime1) { return $endTime2 - $beginTime1; } //当time2范围在$endTime1范围左右时 if ($beginTime2 < $endTime1 && $endTime1 < $endTime2) { return $endTime1 - $beginTime2; } }
/** * 通过IP获取地址 * @param string $ip * @return string */ function get_address($ip = '') { $ipadd = get_url("https://api.map.baidu.com/location/ip?ak=" . "这里去百度申请ak" . "&ip=" . $ip); $data = json_decode($ipadd); return $data; }