PHP常用的方法
2021-03-10 09:29
标签:children oca htm 开始 判断 大小 ice size 随机 PHP对银行卡做掩码处理 PHP常用的方法 标签:children oca htm 开始 判断 大小 ice size 随机 原文地址:https://www.cnblogs.com/ccw869476711/p/12853391.htmlphp
/*------------------------------------------------------ */
// * 对银行卡号进行掩码处理
// * @param string $bankCardNo 银行卡号
//* @return string 掩码后的银行卡号
/*------------------------------------------------------ */
function formatBankCardNo($bankCardNo){
//截取银行卡号前4位
$prefix = substr($bankCardNo,0,4);
//截取银行卡号后4位
$suffix = substr($bankCardNo,-4,4);
$maskBankCardNo = $prefix." **** **** **** ".$suffix;
return $maskBankCardNo;
}
/*------------------------------------------------------ */
// * 时间转换计算
// * @param$show_time 需要转换的时间戳
// * @return string 转换后的时间
/*------------------------------------------------------ */
function timeTran($show_time) {
$dur = time() - $show_time;
if ($dur ) {
return ‘刚刚‘;
}
if ($dur ) {
return $dur . ‘秒前‘;
}
if ($dur ) {
return floor($dur / 60) . ‘分钟前‘;
}
if ($dur ) {
return floor($dur / 3600) . ‘小时前‘;
}
if ($dur //3天内
return floor($dur / 86400) . ‘天前‘;
}
return date("Y-m-d", $show_time);
}
/*------------------------------------------------------ */
// * 生成指定长度的随机字符串(包含大写英文字母, 小写英文字母, 数字)
// * @param int $length 需要生成的字符串的长度
// * @return string 包含 大小写英文字母 和 数字 的随机字符串
/*------------------------------------------------------ */
function random_str($length,$isupper = false){
//生成一个包含 大写英文字母, 小写英文字母, 数字 的数组
$arr = $isupper ? array_merge(range(‘A‘,‘H‘),range(‘J‘,‘M‘),range(‘P‘,‘Z‘),range(0,9)) : array_merge(range(‘A‘, ‘Z‘),range(0, 9), range(‘a‘, ‘z‘));
$str = ‘‘;
$arr_len = count($arr);
for ($i = 0; $i $length; $i++){
$rand = mt_rand(0, $arr_len-1);
$str.=$arr[$rand];
}
return $str;
}
/*------------------------------------------------------ */
// * 实现中文字串截取无乱码的方法
// * @param $string 待截取的字符串
// * @param $start 开始截取位置
// * @param $length 截取长度
// * @return $string 截取后的字符串
/*------------------------------------------------------ */
function getSubstr($string, $start, $length) {
if(mb_strlen($string,‘utf-8‘)>$length){
$str = mb_substr($string, $start, $length,‘utf-8‘);
return $str.‘...‘;
}else{
return $string;
}
}
/*------------------------------------------------------ */
// * 验证手机号码
// * @param $phone 手机号码
// * @return bool
/*------------------------------------------------------ */
function checkMobile($phone = ‘‘){
$preg_phone=‘/^1\d{10}$/ims‘;
if(preg_match($preg_phone,$phone)){
return true;
}
return false;
}
/*------------------------------------------------------ */
//-- 过滤掉emoji表情
/*------------------------------------------------------ */
function repEmoji($str){
$str = preg_replace_callback( ‘/./u‘,function (array $match) {
return strlen($match[0]) >= 4 ? ‘‘ : $match[0];
},$str);
return $str;
}
/*------------------------------------------------------ */
//-- 格式化价格
//-- @access public
//-- @param float $price 价格
//-- @return string
/*------------------------------------------------------ */
function priceFormat($price,$show_yuan = false,$type=0){
switch ($type){
case 0:
$price = number_format($price, 2, ‘.‘, ‘‘);
break;
case 1: // 保留不为 0 的尾数
$price = preg_replace(‘/(.*)(\\.)([0-9]*?)0+$/‘, ‘\1\2\3‘, number_format($price, 2, ‘.‘, ‘‘));
if (substr($price, -1) == ‘.‘) $price = substr($price, 0, -1);
break;
case 2: // 不四舍五入,保留1位
$price = substr(number_format($price, 2, ‘.‘, ‘‘), 0, -1);
break;
case 3: // 直接取整
$price = intval($price);
break;
case 4: // 四舍五入,保留 1 位
$price = number_format($price, 1, ‘.‘, ‘‘);
break;
case 5: // 先四舍五入,不保留小数
$price = round($price);
break;
}
if($show_yuan == false) return sprintf("%s", $price);
else return sprintf("¥%s元", $price);
}
/*------------------------------------------------------ */
//-- * 格式化字节大小
//-- * @param number $size 字节数
//-- * @param string $delimiter 数字和单位分隔符
//-- * @return string
/*------------------------------------------------------ */
function formatBytes($size, $delimiter = ‘‘) {
$units = array(‘B‘, ‘KB‘, ‘MB‘, ‘GB‘, ‘TB‘, ‘PB‘);
for ($i = 0; $size >= 1024 && $i 5; $i++) $size /= 1024;
return round($size, 2) . $delimiter . $units[$i];
}
/*------------------------------------------------------ */
//-- 将数组转换组下拉选项
//-- @param array $arr 所有的数组
//-- @param int $selected 选中项
//-- @param boolean $islimit 是否判断限制不可选
//-- @param int $level 返回等级
//-- @param int $kd_type 快递类型:0 快递100; 1 快递鸟
//-- @return string
/*------------------------------------------------------ */
function arrToSel(&$rows = array(), $selected = 0, $islimit = false, $level = 0 ){
$select = ‘‘;
$selected = explode(‘,‘,$selected);
foreach ($rows AS $key=>$val){
if (is_array($val) == false){
$selected = (in_array($key,$selected)) ? "selected=‘selected‘" : ‘‘;
$select .= ‘‘;
continue;
}
if ($level > 0 && $val[‘level‘] > $level) continue;
$select .= ‘‘;
}
return $select;
}
/*------------------------------------------------------ */
//-- 返回一个带有缩进级别的数组
/*------------------------------------------------------ */
function returnRecArr(&$rows){
$newrows = array();
foreach ($rows as $key=>$row){
$newrows[$row[‘pid‘]][$row[‘id‘]] = $row;
}
return $newrows;
}
/*------------------------------------------------------ */
//-- 创建目录
/*------------------------------------------------------ */
function makeDir($folder){
$reval = false;
if (!file_exists($folder)){
/* 如果目录不存在则尝试创建该目录 */
@umask(0);
/* 将目录路径拆分成数组 */
preg_match_all(‘/([^\/]*)\/?/i‘, $folder, $atmp);
/* 如果第一个字符为/则当作物理路径处理 */
$base = ($atmp[0][0] == ‘/‘) ? ‘/‘ : ‘‘;
/* 遍历包含路径信息的数组 */
foreach ($atmp[1] as $val){
if (‘‘ != $val){
$base .= $val;
if (‘..‘ == $val || ‘.‘ == $val){
/* 如果目录为.或者..则直接补/继续下一个循环 */
$base .= ‘/‘;
continue;
}
}else{continue;}
$base .= ‘/‘;
if (!file_exists($base)){
/* 尝试创建目录,如果创建失败则继续循环 */
if (@mkdir(rtrim($base, ‘/‘), 0777)){
@chmod($base, 0777);
$reval = true;
}
}
}
}else{
/* 路径已经存在。返回该路径是不是一个目录 */
$reval = is_dir($folder);
}
clearstatcache();
return $reval;
}
/**
* 写入日志
* @param string|array $values
* @param string $dir
* @return bool|int
*/
function _log($values, $dir)
{
if (is_array($values))
$values = print_r($values, true);
// 日志内容
$content = ‘[‘ . date(‘Y-m-d H:i:s‘) . ‘]‘ . PHP_EOL . $values . PHP_EOL . PHP_EOL;
try {
// 文件路径
$filePath = $dir . ‘/logs/‘;
// 路径不存在则创建
!is_dir($filePath) && mkdir($filePath, 0755, true);
// 写入文件
return file_put_contents($filePath . date(‘Ymd‘) . ‘.log‘, $content, FILE_APPEND);
} catch (\Exception $e) {
return false;
}
}
/*------------------------------------------------------
* 校验日期格式是否正确
* @param string $date 日期
* @param string $formats 需要检验的格式数组
* @return boolean
------------------------------------------------------ */
function checkDateIsValid($date, $formats = array("Y-m-d H:i:s","Y-m-d H:i")){
$unixTime = strtotime($date);
if (!$unixTime) return false; //strtotime转换不对,日期格式显然不对
//校验日期的有效性,只要满足其中一个格式就OK
if (!is_array($formats)) $formats = explode(‘,‘,$formats);
foreach ($formats as $format) {
if (date($format, $unixTime) == $date) return true;
}
return false;
}
/**
* 获取当前页面完整URL地址
*/
function getUrl($val=‘‘,$valb=‘‘,$var=array()){
$sys_protocal = isset($_SERVER[‘SERVER_PORT‘]) && $_SERVER[‘SERVER_PORT‘] == ‘443‘ ? ‘https://‘ : ‘http://‘;
if($valb == ‘img‘){
if (strstr($val,‘http:‘)) return $val;
return $sys_protocal.(isset($_SERVER[‘HTTP_HOST‘]) ? $_SERVER[‘HTTP_HOST‘] : ‘‘).$val;
}elseif($valb == ‘url‘){
$var[‘token‘] = $GLOBALS[‘userinfo‘][‘token‘];
if (strstr($val,‘http:‘)) return $val;
return $sys_protocal.(isset($_SERVER[‘HTTP_HOST‘]) ? $_SERVER[‘HTTP_HOST‘] : ‘‘).url($val,$var);
}elseif($valb == ‘_url‘){
$var[‘token‘] = $GLOBALS[‘userinfo‘][‘token‘];
if (strstr($val,‘http:‘)) return $val;
return $sys_protocal.(isset($_SERVER[‘HTTP_HOST‘]) ? $_SERVER[‘HTTP_HOST‘] : ‘‘).url($val,$var);
}
$php_self = $_SERVER[‘PHP_SELF‘] ? $_SERVER[‘PHP_SELF‘] : $_SERVER[‘SCRIPT_NAME‘];
$path_info = isset($_SERVER[‘PATH_INFO‘]) ? $_SERVER[‘PATH_INFO‘] : ‘‘;
$relate_url = isset($_SERVER[‘REQUEST_URI‘]) ? $_SERVER[‘REQUEST_URI‘] : $php_self.(isset($_SERVER[‘QUERY_STRING‘]) ? ‘?‘.$_SERVER[‘QUERY_STRING‘] : $path_info);
return $sys_protocal.(isset($_SERVER[‘HTTP_HOST‘]) ? $_SERVER[‘HTTP_HOST‘] : ‘‘).$relate_url;
}
/**
* 获取url 中的各个参数 类似于 pay_code=alipay&bank_code=ICBC-DEBIT
* @param type $str
* @return type
*/
function parseUrlParam($str){
$data = array();
$str = explode(‘?‘,$str);
$str = end($str);
$parameter = explode(‘&‘,$str);
foreach($parameter as $val){
$tmp = explode(‘=‘,$val);
$data[$tmp[0]] = $tmp[1];
}
return $data;
}