<?php
//身份证号转换
function IDCode15to18($ID15)
{
$ID18=substr($ID15,0,6).'19'.substr($ID15,6);
for($i=17;$i>0;$i--){
$num+=(2^$i%11)*(substr($ID18,18-$i,1));
}
$num=$num%11;
switch($num){
case 0:
$code="1";
break;
case 1:
$code="0";
break;
case 2:
$code="X";
break;
default:
$code=strval(12-$num);
break;
}
$ID18.=$code;
return $ID18;
}
if($_POST["old"]!="")
echo IDCode15to18($_POST["old"]);
?>
<form method=post>
<input name=old value="<?PHP echo $_POST["old"];?>">
<input type=submit value="转换">
</form>
//身份证号转换
function IDCode15to18($ID15)
{
$ID18=substr($ID15,0,6).'19'.substr($ID15,6);
for($i=17;$i>0;$i--){
$num+=(2^$i%11)*(substr($ID18,18-$i,1));
}
$num=$num%11;
switch($num){
case 0:
$code="1";
break;
case 1:
$code="0";
break;
case 2:
$code="X";
break;
default:
$code=strval(12-$num);
break;
}
$ID18.=$code;
return $ID18;
}
if($_POST["old"]!="")
echo IDCode15to18($_POST["old"]);
?>
<form method=post>
<input name=old value="<?PHP echo $_POST["old"];?>">
<input type=submit value="转换">
</form>
$str="12345678912345612*";
if(ereg("^[0-9]{15}$",$str) or ereg("^[0-9]{17}\\*$",$str) or ereg("^[0-9]{18}$",$str) )
{
print "这是一个正确的号码";
}
else {
print "这不是一个正确的号码.";
}
?>
这是笨人的笨方法.见笑.
$id2 = "33sdfdsdsafds00";
$id3 = "330000000000000000";
$id4 = "33000000000000000*";
if(preg_match("/(^\d{15}$)|(^\d{17}[\*|\d]{1}$)/i",$id1))
echo "id1=".$id1."ok!";
if(preg_match("/(^\d{15}$)|(^\d{17}[\*|\d]{1}$)/i",$id2))
echo "id2=".$id2."ok!";
if(preg_match("/(^\d{15}$)|(^\d{17}[\*|\d]{1}$)/i",$id3))
echo "id3=".$id3."ok!";
if(preg_match("/(^\d{15}$)|(^\d{17}[\*|\d]{1}$)/i",$id4))
echo "id4=".$id4."ok!";
http://expert.csdn.net/Expert/topic/949/949264.xml?temp=.179989
echo 'yes';
}既然不要求字母就不存在大小写的问题
\d{15}代表前面15位
(\d{2}[\d\*])?中的括号中的代表2位数字+一位数字或者*,最后在外面加上?,表示非贪婪模式了,这里相当于{0,1}