php常用函数 集合,PHP常用实用函数集合

这是一个包含多个PHP实用函数的代码段,包括生成随机数字串、字符串,创建订单号,验证银行卡号,实现阻塞锁,获取当前小时历史记录,检查是否为AJAX请求,文件上传检查,目录递归创建,获取用户IP及数据过滤等功能。这些函数可以用于增强PHP应用的实用性和安全性。
摘要由CSDN通过智能技术生成

if (!function_exists('number_random')) {

/**

* 生成随机数字串

*

* @param int $length

* @return string

*/

function number_random($length = 6) {

$result = '';

for ($i = 0; $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 

$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 

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 

$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;

}

}

if (!function_exists('isAjax')) {

//检查是否为ajax

function isAjax() {

if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH'])=='xmlhttprequest') {

return true;

} else {

return false;

}

;

}

}

if (!function_exists('check_upload')) {

//检查上传文件类型,以及是否为http上传

function check_upload($file) {

$ext = strtolower(pathinfo($file['name'], PATHINFO_EXTENSION));

$contentType = $file['type'];

if (is_uploaded_file($file['tmp_name']) && $ext == 'txt' && $contentType == 'text/plain' && $file['error'] == 0) {

return true;

} else {

return false;

}

}

}

if (!function_exists('mk_dirs')) {

//递归构建目录

function mk_dirs($dir) {

return is_dir($dir) or (mk_dirs(dirname($dir)) and mkdir($dir, 0777));

}

}

if (!function_exists('get_ip')) {

function get_ip() {

//获取用户的IP地址

//strcasecmp 比较两个字符,不区分大小写。返回0,>0,<0。

if (getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) {

$ip = getenv('HTTP_CLIENT_IP');

} elseif (getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown')) {

$ip = getenv('HTTP_X_FORWARDED_FOR');

} elseif (getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown')) {

$ip = getenv('REMOTE_ADDR');

} elseif (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')) {

$ip = $_SERVER['REMOTE_ADDR'];

}

$res = preg_match('/[\d\.]{7,15}/', $ip, $matches) ? $matches[0] : '';

return $res;

}

}

if (!function_exists('trim_data')) {

//简单有用的数据过滤

function trim_data($data) {

$data = trim($data);

$data = htmlspecialchars($data);

$data = strip_tags($data);

if(!get_magic_quotes_gpc()) {

$data = addslashes($data);

}

return $data;

}

}

顶一下

(0)

100%订阅

回复

踩一下

(0)

100%

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值