代码方法包括:
1、身份证验证
2、友好时间
3、转换时间
4、剩余时间
5、检验密码
6、检验手机号
7、将金额数值转为大写
8、将数字转为中文
<?php
//身份证验证
function checkIdCard($idcard) {
if(empty($idcard)){
return false;
}else{
$idcard = strtoupper($idcard); # 如果是小写x,转化为大写X
if(strlen($idcard) != 18 && strlen($idcard) != 15){
return false;
}
# 如果是15位身份证,则转化为18位
if(strlen($idcard) == 15){
# 如果身份证顺序码是996 997 998 999,这些是为百岁以上老人的特殊编码
if (array_search(substr($idcard, 12, 3), array('996', '997', '998', '999')) !== false) {
$idcard = substr($idcard, 0, 6) . '18' . substr($idcard, 6, 9);
} else {
$idcard = substr($idcard, 0, 6) . '19' . substr($idcard, 6, 9);
}
# 加权因子
$factor = array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
# 校验码对应值
$code = array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
$checksum = 0;
for ($i = 0; $i < strlen($idcard); $i++) {
$checksum += substr($idcard, $i, 1) * $factor[$i];
}
$idcard = $idcard . $code[$checksum % 11];
}
# 验证身份证开始
$IDCardBody = substr($idcard, 0, 17); # 身份证主体
$IDCardCode = strtoupper(substr($idcard, 17, 1)); # 身份证最后一位的验证码
# 加权因子
$factor = array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
# 校验码对应值
$code = array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
$checksum = 0;
for ($i = 0; $i < strlen($IDCardBody); $i++) {
$checksum += substr($IDCardBody, $i, 1) * $factor[$i];
}
$validateIdcard = $code[$checksum % 11]; # 判断身份证是否合理
if($validateIdcard != $IDCardCode){
return false;
}else{
return true;
}
}
}
//友好时间
function friend_date($time)
{
if (!$time)
return false;
$fdate = '';
$d = time() - intval($time);
$ld = $time - mktime(0, 0, 0, 0, 0, date('Y')); //得出年
$md = $time - mktime(0, 0, 0, date('m'), 0, date('Y')); //得出月
$byd = $time - mktime(0, 0, 0, date('m'), date('d') - 2, date('Y')); //前天
$yd = $time - mktime(0, 0, 0, date('m'), date('d') - 1, date('Y')); //昨天
$dd = $time - mktime(0, 0, 0, date('m'), date('d'), date('Y')); //今天
$td = $time - mktime(0, 0, 0, date('m'), date('d') + 1, date('Y')); //明天
$atd = $time - mktime(0, 0, 0, date('m'), date('d') + 2, date('Y')); //后天
if ($d == 0) {
$fdate = '刚刚';
} else {
switch ($d) {
case $d < $atd:
$fdate = date('Y-m-d', $time);
break;
case $d < $td:
$fdate = '后天' . date('H:i', $time);
break;
case $d < 0:
$fdate = '明天' . date('H:i', $time);
break;
case $d < 60:
$fdate = $d . '秒前';
break;
case $d < 3600:
$fdate = floor($d / 60) . '分钟前';
break;
case $d < $dd:
$fdate = floor($d / 3600) . '小时前';
break;
case $d < $yd:
$fdate = '昨天' . date('H:i', $time);
break;
case $d < $byd:
$fdate = '前天' . date('H:i', $time);
break;
case $d < $md:
$fdate = date('m/d日 H:i', $time);
break;
case $d < $ld:
$fdate = date('m/d', $time);
break;
default:
$fdate = date('Y-m-d', $time);
break;
}
}
return $fdate;
}
//转换时间
function time_tran($timer)
{
$diff = $_SERVER['REQUEST_TIME'] - $timer;
$day = floor($diff / 86400);
$free = $diff % 86400;
if ($day > 0) {
return $day . " 天前";
} else {
if ($free > 0) {
$hour = floor($free / 3600);
$free = $free % 3600;
if ($hour > 0) {
return $hour . " 小时前";
} else {
if ($free > 0) {
$min = floor($free / 60);
$free = $free % 60;
if ($min > 0) {
return $min . " 分钟前";
} else {
if ($free > 0) {
return $free . " 秒前";
} else {
return '刚刚';
}
}
} else {
return '刚刚';
}
}
} else {
return '刚刚';
}
}
}
//剩余时间
function time2string($second)
{
$day = floor($second / (3600 * 24));
$second = $second % (3600 * 24);//除去整天之后剩余的时间
$hour = floor($second / 3600);
$second = $second % 3600;//除去整小时之后剩余的时间
$minute = floor($second / 60);
$second = $second % 60;//除去整分钟之后剩余的时间
//返回字符串
if (empty($day)) {
if (empty($hour)) {
if (empty($minute)) {
$minute = 0;
$data = $minute . '天';
} else {
$data = $minute . '分钟';
}
} else {
$data = $hour . '小时';
}
} else {
$data = $day . '天';
}
return $data;
// return $day.'天'.$hour.'小时'.$minute.'分'.$second.'秒';
// return $day.'天'.$hour.':'.$minute.':'.$second;
}
//检验密码
function check_password($password)
{
if (preg_match("/^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,32}$/", $password)) {
return true;
} else {
return false;
}
}
//检验手机号
function check_mobile($mobile)
{
if (!preg_match("/^1\d{10}$/", $mobile)) {
return false;
} else {
return true;
}
}
//将金额数值转为大写
function convertAmountToCn($amount, $type = 1)
{
// 判断输出的金额是否为数字或数字字符串
if (!is_numeric($amount)) {
return "要转换的金额只能为数字!";
}
// 金额为0,则直接输出"零元整"
if ($amount == 0) {
return "零元整";
}
// 金额不能超过万亿,即12位
if (strlen($amount) > 12) {
return "要转换的金额不能为万亿及更高金额!";
}
// 金额不能为负数
$is_fu = '';
if ($amount < 0) {
$is_fu = '负';
//求绝对值
$amount = abs($amount);
}
// 预定义中文转换的数组
$digital = array('零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖');
// 预定义单位转换的数组
$position = array('仟', '佰', '拾', '亿', '仟', '佰', '拾', '万', '仟', '佰', '拾', '元');
// 将金额的数值字符串拆分成数组
$amountArr = explode('.', $amount);
// 将整数位的数值字符串拆分成数组
$integerArr = str_split($amountArr[0], 1);
// 将整数部分替换成大写汉字
$result = '';//前缀
$integerArrLength = count($integerArr); // 整数位数组的长度
$positionLength = count($position); // 单位数组的长度
for ($i = 0; $i < $integerArrLength; $i++) {
// 如果数值不为0,则正常转换
if ($integerArr[$i] != 0) {
$result = $result . $digital[$integerArr[$i]] . $position[$positionLength - $integerArrLength + $i];
} else {
// 如果数值为0, 且单位是亿,万,元这三个的时候,则直接显示单位
if (($positionLength - $integerArrLength + $i + 1) % 4 == 0) {
$result = $result . $position[$positionLength - $integerArrLength + $i];
}
}
}
// 如果小数位也要转换
if ($type == 0) {
// 将小数位的数值字符串拆分成数组
$decimalArr = str_split($amountArr[1], 1);
// 将角替换成大写汉字. 如果为0,则不替换
if ($decimalArr[0] != 0) {
$result = $result . $digital[$decimalArr[0]] . '角';
}
// 将分替换成大写汉字. 如果为0,则不替换
if ($decimalArr[1] != 0) {
$result = $result . $digital[$decimalArr[1]] . '分';
}
} else {
$result = $result . '整';
}
return $is_fu . $result;
}
//将数字转为中文
function number2chinese($num)
{
if (is_int($num) && $num < 100) {
$char = array('零', '一', '二', '三', '四', '五', '六', '七', '八', '九');
$unit = ['', '十', '百', '千', '万'];
$return = '';
if ($num < 10) {
$return = $char[$num];
} elseif ($num % 10 == 0) {
$firstNum = substr($num, 0, 1);
if ($num != 10) $return .= $char[$firstNum];
$return .= $unit[strlen($num) - 1];
} elseif ($num < 20) {
$return = $unit[substr($num, 0, -1)] . $char[substr($num, -1)];
} else {
$numData = str_split($num);
$numLength = count($numData) - 1;
foreach ($numData as $k => $v) {
if ($k == $numLength) continue;
$return .= $char[$v];
if ($v != 0) $return .= $unit[$numLength - $k];
}
$return .= $char[substr($num, -1)];
}
return $return;
}
}