```
<?php
/**
* 根据身份证号码获取性别
* author:xiaochuan
* @param string $idcard 身份证号码
* @return int $sex 性别 1男 2女 0未知
*/
function get_sex($idcard)
{
if (empty($idcard)) return null;
$sexint = (int)substr($idcard, 16, 1);
return $sexint % 2 === 0 ? '女' : '男';
}
```
```
/**
* 根据身份证号码获取生日
* author:xiaochuan
* @param string $idcard 身份证号码
* @return $birthday
*/
function get_birthday($idcard)
{
if (empty($idcard)) return null;
$bir = substr($idcard, 6, 8);
$year = (int)substr($bir, 0, 4);
$month = (int)substr($bir, 4, 2);
$day = (int)substr($bir, 6, 2);
return $year . "-" . $month . "-" . $day;
}
```
```
/**
* 根据身份证号码计算年龄
* author:xiaochuan
* @param string $idcard 身份证号码
* @return int $age
*/
function get_age($idcard)
{
if (empty($idcard)) return null;
# 获得出生年月日的时间戳
$date = strtotime(substr($idcard, 6, 8));
# 获得今日的时间戳
$today = strtotime('today');
# 得到两个日期相差的大体年数
$diff = floor(($today - $date) / 86400 / 365);
# strtotime加上这个年数后得到那日的时间戳后与今日的时间戳相比
$age = strtotime(substr($idcard, 6, 8) . ' +' . $diff . 'years') > $today ? ($diff + 1) : $diff;
return $age;
}
```
```
/**
* 根据身份证号码获取出身地址
* author:xiaochuan
* @param string $idcard 身份证号码
* @return string $address
*/
function get_address($idcard, $type = 1)
{
if (empty($idcard)) return null;
$address = include('./address.php');
switch ($type) {
case 1:
# 截取前六位数(获取基体到县区的地址)
$key = substr($idcard, 0, 6);
if (!empty($address[$key])) return $address[$key];
# 截取前两位数(没有基体到县区的地址就获取省份)
$key = substr($idcard, 0, 2);
if (!empty($address[$key])) return $address[$key];
# 都没有
return '未知地址';
break;
case 2:
# 截取前两位数(只获取省份)
$key = substr($idcard, 0, 2);
if (!empty($address[$key])) return $address[$key];
break;
default:
return null;
break;
}
}
```
```
/**
* 判断字符串是否是身份证号
* author:xiaochuan
* @param string $idcard 身份证号码
*/
function isIdCard($idcard)
{
# 转化为大写,如出现x
$idcard = strtoupper($idcard);
# 加权因子
$wi = array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
$ai = array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
# 按顺序循环处理前17位
$sigma = 0;
# 提取前17位的其中一位,并将变量类型转为实数
for ($i = 0; $i < 17; $i++) {
$b = (int)$idcard{$i};
# 提取相应的加权因子
$w = $wi[$i];
# 把从身份证号码中提取的一位数字和加权因子相乘,并累加
$sigma += $b * $w;
}
# 计算序号
$sidcard = $sigma % 11;
# 按照序号从校验码串中提取相应的字符。
$check_idcard = $ai[$sidcard];
if ($idcard{17} == $check_idcard) {
return '是正确的身份证';
} else {
return '错误的身份证';
}
}
```
```
/**
* 根据身份证号,返回对应的生肖
* author:xiaochuan
* @param string $idcard 身份证号码
*/
function get_zodiac($idcard)
{ //
if (empty($idcard)) return null;
$start = 1901;
$end = (int)substr($idcard, 6, 4);
$x = ($start - $end) % 12;
$val = '';
if ($x == 1 || $x == -11) $val = '鼠';
if ($x == 0) $val = '牛';
if ($x == 11 || $x == -1) $val = '虎';
if ($x == 10 || $x == -2) $val = '兔';
if ($x == 9 || $x == -3) $val = '龙';
if ($x == 8 || $x == -4) $val = '蛇';
if ($x == 7 || $x == -5) $val = '马';
if ($x == 6 || $x == -6) $val = '羊';
if ($x == 5 || $x == -7) $val = '猴';
if ($x == 4 || $x == -8) $val = '鸡';
if ($x == 3 || $x == -9) $val = '狗';
if ($x == 2 || $x == -10) $val = '猪';
return $val;
}
```
```
/**
* 根据身份证号,返回对应的星座
* author:xiaochuan
* @param string $idcard 身份证号码
*/
function get_starsign($idcard)
{
if (empty($idcard)) return null;
$b = substr($idcard, 10, 4);
$m = (int)substr($b, 0, 2);
$d = (int)substr($b, 2);
$val = '';
if (($m == 1 && $d <= 21) || ($m == 2 && $d <= 19)) {
$val = "水瓶座";
} else if (($m == 2 && $d > 20) || ($m == 3 && $d <= 20)) {
$val = "双鱼座";
} else if (($m == 3 && $d > 20) || ($m == 4 && $d <= 20)) {
$val = "白羊座";
} else if (($m == 4 && $d > 20) || ($m == 5 && $d <= 21)) {
$val = "金牛座";
} else if (($m == 5 && $d > 21) || ($m == 6 && $d <= 21)) {
$val = "双子座";
} else if (($m == 6 && $d > 21) || ($m == 7 && $d <= 22)) {
$val = "巨蟹座";
} else if (($m == 7 && $d > 22) || ($m == 8 && $d <= 23)) {
$val = "狮子座";
} else if (($m == 8 && $d > 23) || ($m == 9 && $d <= 23)) {
$val = "处女座";
} else if (($m == 9 && $d > 23) || ($m == 10 && $d <= 23)) {
$val = "天秤座";
} else if (($m == 10 && $d > 23) || ($m == 11 && $d <= 22)) {
$val = "天蝎座";
} else if (($m == 11 && $d > 22) || ($m == 12 && $d <= 21)) {
$val = "射手座";
} else if (($m == 12 && $d > 21) || ($m == 1 && $d <= 20)) {
$val = "魔羯座";
}
return $val;
}
echo '<br/>性别:' . get_sex('身份证号码') . '<br/>';
echo '<br/>生日:' . get_birthday('身份证号码') . '<br/>';
echo '<br/>年龄:' . get_age('身份证号码') . '<br/>';
echo '<br/>地址:' . get_address('身份证号码') . '<br/>';
echo '<br/>状态:' . isIdCard('身份证号码') . '<br/>';
echo '<br/>生肖:' . get_zodiac('身份证号码') . '<br/>';
echo '<br/>星座:' . get_starsign('身份证号码') . '<br/>';
?>
```
- 后端
- PHP
- php接收base64格式的图片
- php 下载文件
- 位,字节,字符的区别
- 求模技巧
- php curl
- php 浏览器禁用cookie后需要使用session 就可以用url传递session_id
- 有用小方法
- phpDoc
- php 文件锁来解决高并发
- php小知识
- PHP根据身份证号码,获取性别、获取生日、计算年龄等多个信息
- php 获取今天,明天、本周、本周末、本月的起始时间戳和结束时间戳的方法
- php 无限级分类
- xdebug设置
- curl
- 获取现在距离当天结束的还有多少秒
- win10安装php8版本报错(Fix PHP Warning: vcruntime140.dll 14.0 is not compatible with this PHP build.)
- 有趣代码注释
- php array_diff用法
- parse_str 处理http的query参数
- PHP文件上传限制
- php操作html
- php trim 函数的使用
- thinkphp5
- 定时任务不能连接数据库
- 宝塔设置计划任务
- 控制方法 return $data ,不能直接返回json
- tp5.1命令行
- tp3.2.3 报internal server error
- 悟空crm
- web-msg-sender的使用
- 杉德支付
- laravel
- laravel 迁移文件的使用
- laravel的安装
- laravel 单元测试
- laravel seeder的使用
- 模型相关
- restful理解
- laravel 的表单验证
- laravel 队列的使用
- laravel响应宏应用macro
- laravel 判断集合是否为空
- laravel 使用ymondesigns/jwt-auth jwt
- laravel 模型工厂
- laravel 自定义助手函数
- laravel 自带auth的登录
- 宝塔开启laravel队列
- laravel 苹果内购
- laravel 中的.env.example
- laravel 监听执行过的sql语句
- laravel-websockets 替代pusher 发送频道消息
- 记laravel config配置文件目录中不能使用 url()助手函数
- laravel使用 inspector 进行实时监控
- laravel 项目部署的配置
- laravel 删除mongodb集合
- laravel 自定义项目命名空间
- laravel 易错提醒
- laravel 自己组装分页
- laravel 设置定时任务
- laravel事件和队列指定队列名
- laravel 使用validate检测名字是否唯一
- laravel + nginx 伪静态分析
- fastadmin
- cms
- 标签
- 模板
- dact-admin
- dcat-admin的安装
- dcat-admin的curd使用
- dact-admin表单使用
- dcat-admin行为表单使用
- dcat-admin使用技巧
- dcat-admin自定义文件上传
- dcat-admin的js弹窗
- dcat-admin 工具表单传参
- dcat-admin listbox编辑回显用法
- weixin
- 微信支付
- 支付类
- 小程序
- 微信提现类
- jwt
- lcobucci/jwt
- Firebase\JWT
- phpstudy
- nginx配置tp5 505 404 错误
- tp5重写 apache
- 织梦模板 使用weight 排序
- phpstudy 添加php8.1版本
- phpstudy ERR_CONNECTION_REFUSED
- phpstudy 设置多个版本php
- 阿里云
- 支付宝支付
- 阿里云短信
- 阿里云OSS上传图片报错
- 阿里云号码认证(一键登录)
- send login code error: 发送验证码失败:cURL error 28: Connection timed out after 5001 milliseconds
- 极光号码认证(一键登录)
- git使用
- git
- sentry专栏
- sentry的私有化部署
- sentry设置邮箱
- sentry设置url地址
- sentry中KafkaError OFFSET_OUT_OF_RANGE error
- centos
- tar 压缩解压
- centos 8 Errors during downloading metadata for repository 'appstream'
- vim的使用
- ssh秘钥登录
- 修改了.bashrc不能立即生效
- 设置软连接
- 使用echo清空文件内容
- 查看文件大小
- centos8 设置静态ip
- nginx
- nginx的学习
- nginx配置wss
- supervisor的使用
- shell的使用
- 数据库
- mysql
- mysql的事务隔离级别
- mysql共享锁和排它锁
- mysql的三范式
- mysql 在那些场景下索引会失效
- mysql 的书写顺序
- mysql case用法
- mysql 以逗号分割字符串
- msyql innodb 行锁解决高并发
- mysql修改字符集
- 锁
- 乐观锁悲观锁
- mysql 最左索引原则
- mysql 同表两列值互换
- mysql升序排列字段为0的在最后
- mysql case when then else end 语法
- mysql 常见错误
- mysql json用法
- MongoDB
- mongodb安装
- redis
- redis 常用通用命令
- string类型的常见命令
- 连接远程redis删除指定的值
- markdown
- markdown的使用
- github
- github使用小技巧
- jenkins
- 安装jenkins
- jenkins设置时区
- docker
- 安装docker
- docker容器设为自启动和取消容器自启动
- docker 安装mysql
- docker-compose
- docker 安装php
- docker-compose安装nginx
- docker-compose安装php
- docker安装php+supervisor
- composer使用
- composer
- win10检查端口占用
- 局域网内同事访问自己的项目
- 本地测试设置https办法
- 正则表达式
- 前端代码和后台代码部署在一起的解决方法
- pc微信抓包小程序
- xshell一年后提示需要更新才能打开
- 使用ssh秘钥登录服务器
- supervisor
- supervisor的使用
- 浏览器的强制缓存和协商缓存
- window11下ssh远程登录服务器
- chatgpt
- 注册chatgpt
- 第三方chatgpt地址
- 前端
- jquery 常用方法
- jquery 省市区三级联动
- 百度地图短地址
- npm
- webpack
- vue
- 谷歌安装vue-devtools的使用
- swiper 一屏显示页面
- 腾讯地图
- jquery点击图片放大
- 移动端rem适配
- 弹性布局flex
- CSS
- box-sizing
- 移动端去掉滚动条
- 三角形
- 树形结构
- require.js的使用
- 微擎人人商城
- 人人商城弹出框
- 常用方法
- 客服消息
- 企业支付到零钱
- 修复权限问题
- 获取access_token
- 其他管理员没有应用 调用不了p方法
- 修改公众号推送消息
- 人人商城
- 人人商城二开常见问题
- 人人商城应用显示隐藏
- 微擎
- 人人商城小程序解密登录
- 面试题
- 遍历目录中的文件和目录
- 冒泡排序
- php 在字符串中找到最长对称字符串
- 地图相关
- 百度地图根据ip获取地址
- 百度,腾讯,高德,地图点击跳转
- 百度地图根据地址获取经纬度
- 百度地图和腾讯地图经纬度互转
- 其他
- B站跳过充电环节
- 可爱猫咪回收站制作(附图)
- 程序员变量命名网站
- 解决谷歌浏览器强制跳转https
- 随机密码生成
- 编辑器
- vs code使用
- phpstrom
- phpstrom 常用命令
- phpstrom ctrl+b后想回到之前的位置
- phpstrom 批量操作下划线转驼峰
- phpstrom 插件
- phpstrom 使用ctrl+shift+f后搜索不能输入中文
- phpstrom中项目.env文件会自动消失,不显示
- vscode插件