[TOC] #### 生成指定長度的隨機英文數(shù)字字符串 --- ```php /** * 生成指定長度的隨機英文數(shù)字字符串 * @param int $length 字符串長度 * @return string 成的隨機字符串 */ function getRandString($length) { $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; $randomString = ''; for ($i = 0; $i < $length; $i++) { $randomString .= $characters[rand(0, strlen($characters) - 1)]; } return $randomString; } ``` #### 生成24位隨機訂單號, 年月日時分秒(14位) + 10位隨機數(shù) --- ```php /** * 生成24位隨機訂單號 * 年月日時分秒(14位) + 10位隨機數(shù) */ function ordersn() { return date('YmdHis') . substr(implode(NULL, array_map('ord', str_split(substr(uniqid(), 7, 13), 1))), 0, 8) . mt_rand(10, 99); } /** * 隨機生成18位數(shù)字訂單號(18位:不包含前綴) * @param string $prefix 訂單號前綴 * @return string 隨機訂單號 */ function generateOrdersn(string $prefix = '') { return $prefix . date('YmdHis') . substr(implode(NULL, array_map('ord', str_split(substr(uniqid(), 7, 13), 1))), 0, 2) . mt_rand(10, 99); } ``` #### 根據(jù)時間戳出計算到現(xiàn)在的文字時間 --- ```php /** * 將時間戳轉(zhuǎn)為文字時間 * @param integer $time */ function wordTime(int $time) { $str = ''; $time = intval(substr($time, 0, 10)); $int = time() - $time; if ($int < 5){ $str = sprintf('剛剛', $int); } elseif ($int < 60){ $str = sprintf('%d秒前', $int); } elseif ($int < 3600) { $str = sprintf('%d分鐘前', floor($int / 60)); } elseif ($int < 86400){ $str = sprintf('%d小時前', floor($int / 3600)); } elseif ($int < 2592000) { $str = sprintf('%d天前', floor($int / 86400)); } else { $str = date('Y-m-d H:i:s', $time); } return $str; } ``` #### 格式化數(shù)字(將一個整數(shù)進行單位轉(zhuǎn)換: 萬、億) --- ```php /** * 整數(shù)格式化, 單位轉(zhuǎn)換 * @param integer $num */ function formatNumber(int $num) { $num = intval($num); $length = strlen($num); if ( $length > 8 ) { $decimal = rtrim(substr($num, -8, 2), '0'); $decimal = $decimal ? '.' . $decimal : ''; // 億 return substr($num, 0, strrpos($num, substr($num, -7)) - 1) . $decimal . '億'; } elseif ( $length > 4 ) { $decimal = rtrim(substr($num, -4, 2), '0'); $decimal = $decimal ? '.' . $decimal : ''; // 萬 return substr($num, 0, strrpos($num, substr($num, -3)) - 1) . $decimal . 'W'; } else { // 千 return $num; } } ``` #### 給文件生成新的隨機文件名 --- ``` /** * 給文件生成新的隨機文件名 */ function getRandName($file) { return md5(microtime(true) . mt_rand(1, 1e9)) . '.' . pathinfo($file, PATHINFO_EXTENSION); } ``` #### 富文本中的圖片拼接上域名 --- ```php /** * 富文本中的圖片拼接上域名 * @param string $content */ function matchImg(string $content) { preg_match_all('/<img(.*?)src=\"(.*?)\"(.*?)>/is', $content, $matches); if (!empty($matches[2])) { foreach ($matches[2] as $value) { // request()->domain() 獲取當前域名 // 這種獲取當前域名的寫法是TP6中的寫法 if (mb_substr($value, 0, 4) !== 'http') { $content = str_replace($value, request()->domain() . $value, $content); } } } return $content; } ``` #### 獲取請求頭信息【TP6.1】 --- 下面的函數(shù)是用于獲取請求頭中的所有數(shù)據(jù) ThinkPHP6.1.0 源碼文件:`vendor\topthink\framework\src\think\Request.php` 中的 `__make()` 方法 ```php /** * 獲取請求頭信息 */ function getHeaders() { if (function_exists('apache_request_headers') && $result = apache_request_headers()) { $header = $result; } else { $header = []; $server = $_SERVER; foreach ($server as $key => $val) { if (0 === strpos($key, 'HTTP_')) { $key = str_replace('_', '-', strtolower(substr($key, 5))); $header[$key] = $val; } } if (isset($server['CONTENT_TYPE'])) { $header['content-type'] = $server['CONTENT_TYPE']; } if (isset($server['CONTENT_LENGTH'])) { $header['content-length'] = $server['CONTENT_LENGTH']; } } return $header; } ```