聯系官方銷售客服
1835022288
028-61286886
// 電話號碼驗證函數 function dr_shouji_xiaoyan($value, $data = [], $old = []) { if (!$value) { return dr_return_data(0, '請填寫電話'); } elseif (strlen($value) < 11) { return dr_return_data(0, '請輸入正確的11位手機號碼'); } elseif (!is_numeric($value)) { return dr_return_data(0, '只能輸入數字'); } return dr_return_data(1, 'ok'); }
怎么樣類似這樣寫一個身份證號位數效驗,身份證號一般是18位,然后最后一位數可能是X。怎么這樣效驗啊。
還有就是怎么在寫一個,郵箱的效驗。就是需要在填寫郵箱的地方判斷格式。
求大神幫我寫一個
你這個我怎么用呢,前面電話我是這樣用的。然后把代碼放到一個文件里面 這里調用用的,你這個我應該怎么樣用
回復@SMALL
不是,身份證最后一位有可能是數字,有可能是X,不是只能是X啊
回復@如來
身份證最后一位有可能是數字,有可能是X,不是只能是X,就是這么寫的啊
回復@五金沖壓件
哦,我試試
回復@如來
回復@如來
這里的11 要修改成18嗎
完美答案,請給分
大哥,這個我剛才實驗了,
最后一個是S也保存成功了
回復@二開/定制/使用解答專家
有點難搞,一人回復一個,我這懸賞(設置懸賞)應該怎么采納呢
234樓都可行,兩個問題就發兩個帖子唄
/**
* 身份證號驗證
* @param $value
* @return bool
*/
function dr_is_idcard( $value, $data = [], $old = [] )
{
$value = strtoupper($value);
$regx = "/(^\d{15}$)|(^\d{17}([0-9]|X)$)/";
$arr_split = array();
if(!preg_match($regx, $value))
{
return dr_return_data(0, '請填寫身份證');
}
if(15==strlen($value)) //檢查15位
{
$regx = "/^(\d{6})+(\d{2})+(\d{2})+(\d{2})+(\d{3})$/";
@preg_match($regx, $value, $arr_split);
//檢查生日日期是否正確
$dtm_birth = "19".$arr_split[2] . '/' . $arr_split[3]. '/' .$arr_split[4];
if(!strtotime($dtm_birth))
{
return dr_return_data(0, '請填寫正確的身份證');
} else {
return dr_return_data(1, 'ok');
}
}
else //檢查18位
{
$regx = "/^(\d{6})+(\d{4})+(\d{2})+(\d{2})+(\d{3})([0-9]|X)$/";
@preg_match($regx, $value, $arr_split);
$dtm_birth = $arr_split[2] . '/' . $arr_split[3]. '/' .$arr_split[4];
if(!strtotime($dtm_birth)) //檢查生日日期是否正確
{
return dr_return_data(0, '請填寫正確的身份證');
}
else
{
//檢驗18位身份證的校驗碼是否正確。
//校驗位按照ISO 7064:1983.MOD 11-2的規定生成,X可以認為是數字10。
$arr_int = array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
$arr_ch = array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
$sign = 0;
for ( $i = 0; $i < 17; $i++ )
{
$b = (int) $value{$i};
$w = $arr_int[$i];
$sign += $b * $w;
}
$n = $sign % 11;
$val_num = $arr_ch[$n];
if ($val_num != substr($value,17, 1))
{
return dr_return_data(0, '請填寫正確的身份證');
} //phpfensi.com
else
{
return dr_return_data(1, 'ok');
}
}
}
}