PHP实用函数集合
3279
实用函数集合,常用于各类数据验证、订单号和随机字符生成等场景使用。都是比较实用的,还是比较可以的~~
- <?php
- if (!function_exists('number_random')) {
- /**
- * 生成随机数字串
- *
- * @param int $length
- * @return string
- */
- function number_random($length = 6)
- {
- $result = '';
- for ($i = 0; $i < $length; $i++) {
- $result .= mt_rand(0, 9);
- }
- return $result;
- }
- }
- if (!function_exists('string_random')) {
- /**
- * 生成随机字符串
- *
- * @param int $length
- * @return string
- */
- function string_random($length = 6)
- {
- $result = '';
- for ($i = 0; $i < $length; $i++) {
- $rand = mt_rand(1, 3);
- switch ($rand) {
- case 1:
- $result .= mt_rand(0, 9);
- break;
- case 2:
- $result .= chr(mt_rand(65, 90));
- break;
- default:
- $result .= chr(mt_rand(97, 122));
- break;
- }
- }
- return $result;
- }
- }
- if (!function_exists('get_order_number')) {
- /**
- * 生成订单号
- *
- * @param int $length
- * @return string
- */
- function get_order_number($length = 32)
- {
- $date = date('YmdHis');
- $micro = explode('.', microtime(true))[1];
- $rand = string_random($length - (strlen($date) + strlen($micro)));
- return $date . $micro . $rand;
- }
- }
- if (!function_exists('check_bank_card')) {
- /**
- * 验证银行卡号
- *
- * @param string $card
- * @return bool
- */
- function check_bank_card(string $card)
- {
- $arr_no = str_split($card);
- $last_n = $arr_no[count($arr_no) - 1];
- krsort($arr_no);
- $i = 1;
- $total = 0;
- foreach ($arr_no as $n) {
- if ($i % 2 == 0) {
- $ix = $n * 2;
- if ($ix >= 10) {
- $nx = 1 + ($ix % 10);
- $total += $nx;
- } else {
- $total += $ix;
- }
- } else {
- $total += $n;
- }
- $i++;
- }
- $total -= $last_n;
- $total *= 9;
- return $last_n == ($total % 10);
- }
- }
- if (!function_exists('blocking_lock')) {
- /**
- * 阻塞锁
- *
- * @param string $lock_name 锁名字
- * @param int $valid 有效秒数
- * @return mixed
- */
- function blocking_lock(string $lock_name, $valid = 3600)
- {
- $lock_key = 'blocking_lock';
- while ($exp = Redis::hget($lock_key, $lock_name)) {
- if ($exp < microtime(true)) {
- Redis::hdel($lock_key, $lock_name);
- }
- usleep(10);
- }
- return Redis::hset($lock_key, $lock_name, microtime(true) + $valid);
- }
- }
- if (!function_exists('blocking_unlock')) {
- /**
- * 释放阻塞锁
- *
- * @param string $lock_name
- * @return mixed
- */
- function blocking_unlock(string $lock_name)
- {
- $lock_key = 'blocking_lock';
- return Redis::hdel($lock_key, $lock_name);
- }
- }
- if (!function_exists('random_color')) {
- /**
- * 随机十六进制颜色
- *
- * @return string
- */
- function random_color()
- {
- $str = '#';
- for ($i = 0; $i < 6; $i++) {
- $randNum = rand(0, 15);
- switch ($randNum) {
- case 10:
- $randNum = 'a';
- break;
- case 11:
- $randNum = 'b';
- break;
- case 12:
- $randNum = 'c';
- break;
- case 13:
- $randNum = 'd';
- break;
- case 14:
- $randNum = 'e';
- break;
- case 15:
- $randNum = 'f';
- break;
- }
- $str .= $randNum;
- }
- return $str;
- }
- }
- if (!function_exists('get_hour_history')) {
- /**
- * 获取当日历史小时
- *
- * @return array
- */
- function get_hour_history()
- {
- $history = [];
- for ($i = 0; $i <= date('H'); $i++) {
- $history[] = $i;
- }
- return $history;
- }
- }
本文网址:https://www.zztuku.com/detail-8606.html
站长图库 - PHP实用函数集合
申明:如有侵犯,请 联系我们 删除。
您还没有登录,请 登录 后发表评论!
提示:请勿发布广告垃圾评论,否则封号处理!!