class Func
{
/**
* @param $lat1 緯度1
* @param $lng1 經度1
* @param $lat2 緯度2
* @param $lng2 經度2
* @param int $len_type 輸出類型(m?km)
* @param int $decimal 保留小數位
* @return float
*/
public static function GetDistance($lat1, $lng1, $lat2, $lng2, $len_type = 2, $decimal = 2)
{
$radLat1 = $lat1 * M_PI / 180.0;
$radLat2 = $lat2 * M_PI / 180.0;
$a = $radLat1 - $radLat2;
$b = ($lng1 * M_PI / 180.0) - ($lng2 * M_PI / 180.0);
$s = 2 * asin(sqrt(pow(sin($a / 2), 2) + cos($radLat1) * cos($radLat2) * pow(sin($b / 2), 2)));
$s = $s * 6378.137;
$s = round($s * 1000);
if ($len_type > 1) {
$s /= 1000;
}
return round($s, $decimal);
}
/**
* [加密解密函數]
* Created by PhpStorm.
* User: 王亮亮
* Date: 2018/7/25
* Time: 11:29
* @E-mial:[email protected]
* @web:https://blog.csdn.net/pariese
* @param $key
* @param $string
* @param $decrypt
* @return string
*/
function encryptDecrypt($key, $string, $decrypt)
{
if ($decrypt) {
$decrypted = rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5($key), base64_decode($string), MCRYPT_MODE_CBC, md5(md5($key))), "12");
return $decrypted;
} else {
$encrypted = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($key), $string, MCRYPT_MODE_CBC, md5(md5($key))));
return $encrypted;
}
}
/**
* [生成唯一字符串]
* @E-mial [email protected]
* @TIME 2018-06-06
* @WEB https://blog.csdn.net/pariese
* @ 0-存數字字符串;1-小寫字母字符串;2-大寫字母字符串;3-大小寫數字字符串;4-字符;
* 5-數字,小寫,大寫,字符混合
* @param integer $type [字符串的類型]
* @param integer $length [字符串的長度]
* @param integer $time [是否帶時間1-帶,0-不帶]
* @return [string] $str [返回唯一字符串]
*/
function randSole($type = 0, $length = 18, $time = 1)
{
$str = $time == 0 ? '' : date('YmdHis', time());
switch ($type) {
case 0:
for ((int)$i = 0; $i <= $length; $i++) {
if (mb_strlen($str) == $length) {
$str = $str;
} else {
$str .= rand(0, 9);
}
}
break;
case 1:
for ((int)$i = 0; $i <= $length; $i++) {
if (mb_strlen($str) == $length) {
$str = $str;
} else {
$rand = "qwertyuioplkjhgfdsazxcvbnm";
$str .= $rand{mt_rand(0, 26)};
}
}
break;
case 2:
for ((int)$i = 0; $i <= $length; $i++) {
if (mb_strlen($str) == $length) {
$str = $str;
} else {
$rand = "QWERTYUIOPLKJHGFDSAZXCVBNM";
$str .= $rand{mt_rand(0, 26)};
}
}
break;
case 3:
for ((int)$i = 0; $i <= $length; $i++) {
if (mb_strlen($str) == $length) {
$str = $str;
} else {
$rand = "123456789qwertyuioplkjhgfdsazxcvbnmQWERTYUIOPLKJHGFDSAZXCVBNM";
$str .= $rand{mt_rand(0, 35)};
}
}
break;
case 4:
for ((int)$i = 0; $i <= $length; $i++) {
if (mb_strlen($str) == $length) {
$str = $str;
} else {
$rand = "!@#$%^&*()_+=-~`";
$str .= $rand{mt_rand(0, 17)};
}
}
break;
case 5:
for ((int)$i = 0; $i <= $length; $i++) {
if (mb_strlen($str) == $length) {
$str = $str;
} else {
$rand = "123456789qwertyuioplkjhgfdsazxcvbnmQWERTYUIOPLKJHGFDSAZXCVBNM!@#$%^&*()_+=-~`";
$str .= $rand{mt_rand(0, 52)};
}
}
break;
}
return $str;
}
/**
* [生成字符串]
* Created by PhpStorm.
* User: 王亮亮
* Date: 2018/7/25
* Time: 11:31
* @E-mial:[email protected]
* @web:https://blog.csdn.net/pariese
* @param int $length
* @return string
*/
function generateRandomString($length = 10)
{
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$randomString = '';
for ($i = 0; $i < $length; $i++) {
$randomString .= $characters[rand(0, strlen($characters) - 1)];
}
return $randomString;
}
/**
* [PHP獲取文件擴展名(後綴)]
* Created by PhpStorm.
* User: 王亮亮
* Date: 2018/7/25
* Time: 11:32
* @E-mial:[email protected]
* @web:https://blog.csdn.net/pariese
* @param $filename
* @return mixed
*/
function getExtension($filename)
{
$myext = substr($filename, strrpos($filename, '.'));
return str_replace('.', '', $myext);
}
/**
* [獲取ip]
* Created by PhpStorm.
* User: 王亮亮
* Date: 2018/7/25
* Time: 13:41
* @E-mial:[email protected]
* @web:https://blog.csdn.net/pariese
* @return array|false|string
*/
function getIp()
{
if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown"))
$ip = getenv("HTTP_CLIENT_IP");
else
if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown"))
$ip = getenv("HTTP_X_FORWARDED_FOR");
else
if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown"))
$ip = getenv("REMOTE_ADDR");
else
if (isset ($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown"))
$ip = $_SERVER['REMOTE_ADDR'];
else
$ip = "unknown";
return ($ip);
}
/**
* [處理倒計時]
* Created by PhpStorm.
* User: 王亮亮
* Date: 2018/7/25
* Time: 13:43
* @E-mial:[email protected]
* @web:https://blog.csdn.net/pariese
* @param $seconds
* @return string
*/
function changeTimeType($seconds)
{
if ($seconds > 3600) {
$hours = intval($seconds / 3600);
$minutes = $seconds % 3600;
$time = $hours . ":" . gmstrftime('%M:%S', $minutes);
} else {
$time = gmstrftime('%H:%M:%S', $seconds);
}
return $time;
}
/**
* 去除合同富文本標籤
* Created by Mr.亮先生.
* User: 16956
* Date: 2019/7/9
* Time: 16:45
* @Url:
* @param $data
* @return string
*/
public static function format($data)
{
$content_01 = $data;//從數據庫獲取富文本content
$content_02 = htmlspecialchars_decode($content_01);//把一些預定義的 HTML 實體轉換爲字符
$content_03 = str_replace(" ", "", $content_02);//將空格替換成空
$content_04 = str_replace("</p>", "</p>\n", $content_03);
$contents = strip_tags($content_04);//函數剝去字符串中的 HTML、XML 以及 PHP 的標籤,獲取純文本內容
return $contents;
}
/**
* 輸出函數根據類型
* Created by Mr.亮先生.
* User: 16956
* Date: 2019/7/9
* Time: 16:46
* @Url:
* @param $arr
*/
public function P($arr)
{
if (is_array($arr) || is_object($arr)) {
echo "<pre/>";
print_r($arr);
} else if (is_string($arr)) {
echo $arr . "<br/>";
}
}
/**
* 數組轉對象
* Created by Mr.亮先生.
* User: 16956
* Date: 2019/7/9
* Time: 16:47
* @Url:
* @param $arr
* @return object|void
*/
public function array2object($arr)
{
if (!is_array($arr)) return;
foreach ($arr as $k => $v) {
if (is_array($v) || is_object($v))
$arr[$k] = (object)self::array2object($v);
}
return (object)$arr;
}
/**
* 對象轉數組
* Created by Mr.亮先生.
* User: 16956
* Date: 2019/7/9
* Time: 16:48
* @Url:
* @param $obj
* @return array|void
*/
public function object2array($obj)
{
$obj = (array)$obj;
foreach ($obj as $k => $v) {
if (is_resource($v)) return;
if (is_object($v) || is_array($v))
$obj[$k] = (array)self::object2array($v);
}
return $obj;
}
/**
* get請求
* Created by Mr.亮先生.
* User: 16956
* Date: 2019/7/9
* Time: 16:48
* @Url:
* @param $url
* @return bool|string
*/
public function httpGet($url)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 1000);
curl_setopt($ch, CURLOPT_HEADER, 0);
$res = "";
$res = curl_exec($ch);
curl_close($ch);
return $res;
}
/**
* post請求
* Created by Mr.亮先生.
* User: 16956
* Date: 2019/7/9
* Time: 16:48
* @Url:
* @param $url
* @param array $query
* @param array $header
* @return bool|string
*/
public function httpPost($url, $query = array(), $header = array("Content-Type" => "application/x-www-form-urlencoded"))
{
$ch = curl_init();
$query = http_build_query($query);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $query);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_SSLVERSION, 1);
$ret = curl_exec($ch);
curl_close($ch);
return $ret;
}
/**
* 得到微秒
* Created by Mr.亮先生.
* User: 16956
* Date: 2019/7/9
* Time: 16:52
* @Url:
* @return float
*/
function microtime_float()
{
list($usec, $sec) = explode(" ", microtime());
return ((float)$usec + (float)$sec);
}
/**
* 多維數組排序
* Created by Mr.亮先生.
* User: 16956
* Date: 2019/7/9
* Time: 16:53
* @Url:
* @param $arr
* @param $key
* @param int $sort_order
* @param int $sort_type
* @return mixed
*/
function arrayMultiSort($arr, $key, $sort_order = SORT_DESC, $sort_type = SORT_NUMERIC)
{
if (is_array($arr)) {
foreach ($arr as $array) {
if (is_array($array)) {
$key_arrays[] = $array[$key];
}
}
array_multisort($key_arrays, $sort_order, $sort_type, $arr);
}
return $arr;
}
/**
* 數組轉xml
* Created by Mr.亮先生.
* User: 16956
* Date: 2019/7/9
* Time: 16:56
* @Url:
* @param $arr
* @return string
*/
function arrayToXml($arr)
{
$xml = "<xml>";
foreach ($arr as $key => $val) {
if (is_numeric($val)) {
$xml .= "<" . $key . ">" . $val . "</" . $key . ">";
} else
$xml .= "<" . $key . "><![CDATA[" . $val . "]]></" . $key . ">";
}
$xml .= "</xml>";
return $xml;
}
/**
* 將XML轉爲array
* Created by Mr.亮先生.
* User: 16956
* Date: 2019/7/9
* Time: 16:56
* @Url:
* @param $xml
* @return mixed
*/
function xmlToArray($xml)
{
//將XML轉爲array
$array_data = json_decode(json_encode(simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA)), true);
return $array_data;
}
/**
* 獲取漢字首字母
* Created by Mr.亮先生.
* User: 16956
* Date: 2019/7/9
* Time: 16:57
* @Url:
* @param $s0
* @return string|null
*/
function getfirstchar($s0)
{
$fchar = ord($s0{0});
if ($fchar >= ord("A") and $fchar <= ord("z")) return strtoupper($s0{0});
$s1 = iconv("UTF-8", "gb2312", $s0);
$s2 = iconv("gb2312", "UTF-8", $s1);
if ($s2 == $s0) {
$s = $s1;
} else {
$s = $s0;
}
$asc = ord($s{0}) * 256 + ord($s{1}) - 65536;
if ($asc >= -20319 and $asc <= -20284) return "A";
if ($asc >= -20283 and $asc <= -19776) return "B";
if ($asc >= -19775 and $asc <= -19219) return "C";
if ($asc >= -19218 and $asc <= -18711) return "D";
if ($asc >= -18710 and $asc <= -18527) return "E";
if ($asc >= -18526 and $asc <= -18240) return "F";
if ($asc >= -18239 and $asc <= -17923) return "G";
if ($asc >= -17922 and $asc <= -17418) return "I";
if ($asc >= -17417 and $asc <= -16475) return "J";
if ($asc >= -16474 and $asc <= -16213) return "K";
if ($asc >= -16212 and $asc <= -15641) return "L";
if ($asc >= -15640 and $asc <= -15166) return "M";
if ($asc >= -15165 and $asc <= -14923) return "N";
if ($asc >= -14922 and $asc <= -14915) return "O";
if ($asc >= -14914 and $asc <= -14631) return "P";
if ($asc >= -14630 and $asc <= -14150) return "Q";
if ($asc >= -14149 and $asc <= -14091) return "R";
if ($asc >= -14090 and $asc <= -13319) return "S";
if ($asc >= -13318 and $asc <= -12839) return "T";
if ($asc >= -12838 and $asc <= -12557) return "W";
if ($asc >= -12556 and $asc <= -11848) return "X";
if ($asc >= -11847 and $asc <= -11056) return "Y";
if ($asc >= -11055 and $asc <= -10247) return "Z";
return null;
}
/**
* 格式化數量
* Created by Mr.亮先生.
* User: 16956
* Date: 2019/7/9
* Time: 17:00
* @Url:
* @param $count
* @param string $delimiter
* @return float|int|string
*/
function formatCount($count, $delimiter = '')
{
if ($count < 1000) return $count;
$count = $count / 1000;
$units = array('千+', '萬+', '十萬+', '百萬+', '千萬+');
for ($i = 0; $count >= 10 && $i < 5; $i++) $count /= 10;
return round($count, 2) . $delimiter . $units[$i];
}
/**
* 時間展示
* Created by Mr.亮先生.
* User: 16956
* Date: 2019/7/9
* Time: 17:06
* @Url:
* @param $sTime
* @param string $type
* @param string $alt
* @return false|string
*/
function friendly_date($sTime, $type = 'normal', $alt = 'false')
{
if (!$sTime) return '';
//sTime=源時間,cTime=當前時間,dTime=時間差
$cTime = time();
$dTime = $cTime - $sTime;
$dDay = intval(date("z", $cTime)) - intval(date("z", $sTime));
$dYear = intval(date("Y", $cTime)) - intval(date("Y", $sTime));
//normal:n秒前,n分鐘前,n小時前,日期
switch ($type) {
case 'normal':
if ($dTime < 60) {
if ($dTime < 10) {
return '剛剛';
} else {
return intval(floor($dTime / 10) * 10) . "秒前";
}
} elseif ($dTime < 3600) {
return intval($dTime / 60) . "分鐘前";
//今天的數據.年份相同.日期相同.
} elseif ($dYear == 0 && $dDay == 0) {
//return intval($dTime/3600)."小時前";
return '今天' . date('H:i', $sTime);
} elseif ($dYear == 0) {
return date("m月d日 H:i", $sTime);
} else {
return date("Y-m-d H:i", $sTime);
}
break;
case 'mohu':
if ($dTime < 60) {
return $dTime . "秒前";
} elseif ($dTime < 3600) {
return intval($dTime / 60) . "分鐘前";
} elseif ($dTime >= 3600 && $dDay == 0) {
return intval($dTime / 3600) . "小時前";
} elseif ($dDay > 0 && $dDay <= 7) {
return intval($dDay) . "天前";
} elseif ($dDay > 7 && $dDay <= 30) {
return intval($dDay / 7) . '周前';
} elseif ($dDay > 30) {
return intval($dDay / 30) . '個月前';
}
break;
case 'full':
return date("Y-m-d , H:i:s", $sTime);
break;
case 'ymd':
return date("Y-m-d", $sTime);
break;
default:
if ($dTime < 60) {
return $dTime . "秒前";
} elseif ($dTime < 3600) {
return intval($dTime / 60) . "分鐘前";
} elseif ($dTime >= 3600 && $dDay == 0) {
return intval($dTime / 3600) . "小時前";
} elseif ($dYear == 0) {
return date("Y-m-d H:i:s", $sTime);
} else {
return date("Y-m-d H:i:s", $sTime);
}
break;
}
}
/**
* 計算時間差值
* Created by Mr.亮先生.
* User: 16956
* Date: 2019/7/9
* Time: 17:07
* @Url:
* @param $begin_time
* @param $end_time
* @return string
*/
function getTimeDiff($begin_time, $end_time)
{
if ($begin_time < $end_time) {
$starttime = $begin_time;
$endtime = $end_time;
} else {
$starttime = $end_time;
$endtime = $begin_time;
}
$timediff = $endtime - $starttime;
$days = intval($timediff / 86400);
$remain = $timediff % 86400;
$hours = intval($remain / 3600);
$remain = $remain % 3600;
$mins = intval($remain / 60);
$secs = $remain % 60;
return $days . '天' . $hours . '小時' . $mins . '分';
}
/**
* 郵箱驗證
* Created by Mr.亮先生.
* User: 16956
* Date: 2019/7/9
* Time: 17:17
* @Url:
* @param $email
* @return bool
*/
function is_email($email)
{
return strlen($email)>8&&preg_match("/^([0-9A-Za-z\\-_\\.]+)@([0-9a-z]+\\.[a-z]{2,3}(\\.[a-z]{2})?)$/i",$email);
}
/**
* 手機驗證
* Created by Mr.亮先生.
* User: 16956
* Date: 2019/7/9
* Time: 17:18
* @Url:
* @param $phone
* @return bool
*/
function is_phone($phone)
{
return strlen(trim($phone))==11&&preg_match("/^1[3|5|8][0-9]{9}$/i",trim($phone));
}
}
php常用函數封裝與收集,持久更新。。。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.