php身份证号
❶ php execl文档中 身份证号码导入到数据库后显示4.2001e454e55E+17
目测是你的数据库的字段类型设置的不对
❷ 求助,关于输入身份证号码获得生日和性别的PHP函数
自定义一个函数
删除身份证后四位
然后再取出最后八位数就是生日了
❸ PHP判断是否是身份证号
/**
*判断是否为合法的身份证号码
*@param$mobile
*@returnint
*/
functionisCreditNo($vStr){
$vCity=array(
'11','12','13','14','15','21','22',
'23','31','32','33','34','35','36',
'37','41','42','43','44','45','46',
'50','51','52','53','54','61','62',
'63','64','65','71','81','82','91'
);
if(!preg_match('/^([d]{17}[xXd]|[d]{15})$/',$vStr))returnfalse;
if(!in_array(substr($vStr,0,2),$vCity))returnfalse;
$vStr=preg_replace('/[xX]$/i','a',$vStr);
$vLength=strlen($vStr);
if($vLength==18){
$vBirthday=substr($vStr,6,4).'-'.substr($vStr,10,2).'-'.substr($vStr,12,2);
}else{
$vBirthday='19'.substr($vStr,6,2).'-'.substr($vStr,8,2).'-'.substr($vStr,10,2);
}
if(date('Y-m-d',strtotime($vBirthday))!=$vBirthday)returnfalse;
if($vLength==18){
$vSum=0;
for($i=17;$i>=0;$i--){
$vSubStr=substr($vStr,17-$i,1);
$vSum+=(pow(2,$i)%11)*(($vSubStr=='a')?10:intval($vSubStr,11));
}
if($vSum%11!=1)returnfalse;
}
returntrue;
}
❹ php 身份证 正则 检测是否有效怎么写
你的正则表达式的规则错了。。当然不能执行啦
http://blog.sina.com.cn/s/blog_461c24d50100dtnz.html
这是规则。如果你只是拿来主义,就无视吧。
代码长篇大论,是对你负责;说真的,网络没几个愿意自己写那么多字的人。我第二程序是自己写的,试验过了。可以自动把身份证升级到18位,然后验证。
正则表达式其实是来自数学的概念,后来加入了编程语言。正则表达式验证身份证简单,但是有缺点,你的要求是:验证出身年月日,很可惜,正则没办法验证的太完善。也就是说只要符合规则就是正确(比如19940939之类的出生年月。。。),所以写程序就是为了完善它。话说多了= =不采纳也没办法。我自认为我比楼上的好多了。
<?php
$s15="/^[0-9]{15}$/";
//15位正则表达式
$s18="/^[0-9]{6}[1]{1}[9]{1}[0-9]{2}[0-1]{1}[0-9]{1}[0-3]{1}[0-9]{1}[0-9]{3}[0-9X]{1}$/";
//18位正则表达式
$sid="18位或者15位身份证";
if(preg_match($s15,$sid) or preg_match($s18,$sid))
//如果满足这两个条件的其中一个,输出echo
echo 'ok';
else
echo 'no';
?>
简单不好用,我花了一个小时写了一个15位转18位然后自动验证的函数:
<?php
function check($sid)
{
if(strlen($sid)== 15)
//如果是15身份证,进入自动转换程序,把15位升级到18位
{
$wi=array('7','9','10','5','8','4','2','1','6','3','7','9','10','5','8','4','2','1');
$sid=substr_replace($sid,19,6,0);
$count=array();
for($i=0;$i<18;++$i)
{
@$count[$i]=$sid[$i]*$wi[$i];
}
$sum=array_sum($count)%11;
$zuihou=array('1','0','X','9','8','7','6','5','4','3','2');
$sid=substr_replace($sid,$zuihou[$sum],17,0);
//这个sid是18位的。= = 不信你拿自己的身份证(15位)放过来试验,肯定没错。
}
$wi18=array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2);
$sum2=array();
for($j=0;$j<17;$j++)
{
$sum2[$j]=$sid[$j]*$wi18[$j];
}
$sum2=array_sum($sum2)%11;
$yz=array('1','0','X','9','8','7','6','5','4','3','2');
if($yz[$sum2] == $sid[17])
//如果最后一位和验证号一样,则返回真
return true;
else
return false;
}
$sid="18位或者15位身份证";
if(check($sid))
echo '是正确的身份证';
else
echo '身份证不正确';
?>
❺ php怎样调用前端身份证识别器数据
用vlookup函数,但你要说清楚你的表格中姓名和身份证号码在什么单元格才能给你写出公式,具体是
=VLOOKUP(名字,原数据的区域,身份证号码在数据区域的位置,0)
❻ php 身份证的正则表达式怎么写
$IdCard = "/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/i";
提示 :正则格式: ‘/正则表达式/模式修正符’;
所以 添加 i 是忽略英文字母大小写的
❼ thinkphp根据身份证怎么获取所在地区
方法很多,这里举出两种
通过一些平台接口进行查询,例:有道身份证查询这个(貌似封了),可以自行网络下
自建数据库查询,原理:身份证号码的前6位是用来做地区区别码的,所以只要找到各个地区的区别码,用正则匹配就可以知道身份证所在地区了
❽ PHP.导出excel时.身份证号码显示为科学计算了.代码如下.求对A.u_shenfen的字段如何正常导出身份证..
1、我们都有这样的经验,科学计数法是因为数字太大了,在数字左边加一个单引号,你就会发现显示完整的数字了,而不是科学计数的数字了。
2、所以,同理,我们在输出的时候把数字改成字符串类型的就好了。
❾ thinnkphp5.0怎么限制插入手机号或者身份证号的字符长度
strlen($string)
判断一下长度,长了跳出,返回提示
❿ php 检查字符串中是否存在身份证号
15位数身份证验证正则表达式:
$sfzh=preg_match(“/^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$/
”,"字符串");
$sfzh=preg_match(“/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/”,"字符串");