本文目錄一覽:
- 1、php 身份證的正則表達式怎麼寫?
- 2、php的怎麼用身份證號來做帳號判斷代碼
- 3、驗證身份證號碼的正確正則表達式
- 4、PHP 做的後台,如何「實名驗證」
- 5、php 檢查字符串中是否存在身份證號
- 6、PHP正則表達式驗證身份證號格式是否正確
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 是忽略英文字母大小寫的
php的怎麼用身份證號來做帳號判斷代碼
寫了幾個身份證方面的函數,個人感覺挺有用的,特別是在網絡問卷調查時,對個人信息里的身份證進行驗證很有用,但是應者寥寥,還是收在自己的blog里算了。
<?php
// 計算身份證校驗碼,根據國家標準GB 11643-1999
function idcard_verify_number($idcard_base){
if (strlen($idcard_base) != 17){ return false; }
// 加權因子
$factor = array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
// 校驗碼對應值
$verify_number_list = array(』1』, 』0』, 』X』, 』9』, 』8』, 』7』, 』6』, 』5』, 』4』, 』3』, 』2』);
$checksum = 0;
for ($i = 0; $i < strlen($idcard_base); $i++){
$checksum += substr($idcard_base, $i, 1) * $factor[$i];
}
$mod = $checksum % 11;
$verify_number = $verify_number_list[$mod];
return $verify_number;
}
// 將15位身份證升級到18位
function idcard_15to18($idcard){
if (strlen($idcard) != 15){
return false;
}else{
// 如果身份證順序碼是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);
}
}
$idcard = $idcard . idcard_verify_number($idcard);
return $idcard;
}
// 18位身份證校驗碼有效性檢查
function idcard_checksum18($idcard){
if (strlen($idcard) != 18){ return false; }
$idcard_base = substr($idcard, 0, 17);
if (idcard_verify_number($idcard_base) != strtoupper(substr($idcard, 17, 1))){
return false;
}else{
return true;
}
}
?>
其中的$idcard_base是指身份證中的本位碼,本位碼是18位身份證里才有的,也就是18位身份證的前17位,最後一位稱為校驗碼
一般在使用的時候不用直接調用idcard_verify_number(),平時的應用大多是使用後兩個函數,這些函數都沒有關心身份證字符串的格式問題,在調用前自行進行格式檢查。
驗證身份證號碼的正確正則表達式
驗證身份證號碼的正確正則表達式 /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/
function isCardNo(card)
{
// 身份證號碼為15位或者18位,15位時全為數字,18位前17位為數字,最後一位是校驗位,可能為數字或字符X
var reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;
if(reg.test(card) === false)
{
alert(“身份證輸入不合法”);
return false;
}
}
擴展資料:
正則表達式的書寫語法
1、^ 表示匹配字符串的開始位置 (例外 用在中括號中[ ] 時,可以理解為取反,表示不匹配括號中字符串)
2、$ 表示匹配字符串的結束位置
3、* 表示匹配 零次到多次
4、+ 表示匹配 一次到多次 (至少有一次)
5、? 表示匹配零次或一次
6、. 表示匹配單個字符
7、| 表示為或者,兩項中取一項
8、( ) 小括號表示匹配括號中全部字符
9、[ ] 中括號表示匹配括號中一個字符 範圍描述 如[0-9 a-z A-Z]
10、{ } 大括號用於限定匹配次數 如 {n}表示匹配n個字符 {n,}表示至少匹配n個字符 {n,m}表示至少n,最多m
11、\ 轉義字符 如上基本符號匹配都需要轉義字符 如 \* 表示匹配*號
12、\w 表示英文字母和數字 \W 非字母和數字
13、\d 表示數字 \D 非數字
參考鏈接來源:百度百科-正則表達式
PHP 做的後台,如何「實名驗證」
實名認證牽涉公安備案系統,請想公安機關申請接口進行驗證。
否則只能用身份證生成規則進行驗證,但是這樣驗證不是百分之百準確的
以下附上PHP 身份證規則驗證代碼
/*/
# CopyRight: zxing
# Document: 檢查符合 GB11643-1999 標準的身份證號碼的正確性
# File:gb11643_1999.func.php Fri Mar 28 09:42:41 CST 2008 zxing
# Updated:Fri Mar 28 09:42:41 CST 2008
# Note: 調用函數 check_id();
#/*///
$id =array();
$id[] = ‘370882198601064774’;
$id[] = ‘420502198611281126’;
$id[] = ‘370882198601064770’;
$id[] = ‘370882860106477’;
$id[] = ‘63212519850703214x’;
$id[] = ‘429021198203221006’;
$id[] = ‘429036198203211023’;
foreach ($id as $key = $value){
echo check_id($value)?$value.’ 是真的!br/’: $value.’ 是假的!br/’;
}
#/*/
/*/
# 函數功能:計算身份證號碼中的檢校碼
# 函數名稱:idcard_verify_number
# 參數表 :string $idcard_base 身份證號碼的前十七位
# 返回值 :string 檢校碼
# 更新時間:Fri Mar 28 09:50:19 CST 2008
/*/
function idcard_verify_number($idcard_base){
if (strlen($idcard_base) != 17){
return false;
}
$factor = array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2); //debug 加權因子
$verify_number_list = array(‘1’, ‘0’, ‘X’, ‘9’, ‘8’, ‘7’, ‘6’, ‘5’, ‘4’, ‘3’, ‘2’); //debug 校驗碼對應值
$checksum = 0;
for ($i = 0; $i strlen($idcard_base); $i++){
$checksum += substr($idcard_base, $i, 1) * $factor[$i];
}
$mod = $checksum % 11;
$verify_number = $verify_number_list[$mod];
return $verify_number;
}
/*/
# 函數功能:將15位身份證升級到18位
# 函數名稱:idcard_15to18
# 參數表 :string $idcard 十五位身份證號碼
# 返回值 :string
# 更新時間:Fri Mar 28 09:49:13 CST 2008
/*/
function idcard_15to18($idcard){
if (strlen($idcard) != 15){
return false;
}else{// 如果身份證順序碼是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);
}
}
$idcard = $idcard . idcard_verify_number($idcard);
return $idcard;
}
/*/
# 函數功能:18位身份證校驗碼有效性檢查
# 函數名稱:idcard_checksum18
# 參數表 :string $idcard 十八位身份證號碼
# 返回值 :bool
# 更新時間:Fri Mar 28 09:48:36 CST 2008
/*/
function idcard_checksum18($idcard){
if (strlen($idcard) != 18){ return false; }
$idcard_base = substr($idcard, 0, 17);
if (idcard_verify_number($idcard_base) != strtoupper(substr($idcard, 17, 1))){
return false;
}else{
return true;
}
}
/*/
# 函數功能:身份證號碼檢查接口函數
# 函數名稱:check_id
# 參數表 :string $idcard 身份證號碼
# 返回值 :bool 是否正確
# 更新時間:Fri Mar 28 09:47:43 CST 2008
/*/
function check_id($idcard) {
if(strlen($idcard) == 15 || strlen($idcard) == 18){
if(strlen($idcard) == 15){
$idcard = idcard_15to18($idcard);
}
if(idcard_checksum18($idcard)){
return true;
}else{
return false;
}
}else{
return false;
}
}
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)$/」,”字符串”);
PHP正則表達式驗證身份證號格式是否正確
//身份證正則表達式(15位)
$isIDCard1=”/^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$/”;
//身份證正則表達式(18位)
$isIDCard2=”/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{4}$/”;
只給出規則,函數自己寫
原創文章,作者:ORNA,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/143973.html