1. 程式人生 > >php不用正則驗證真假身份證 身份證號碼驗證

php不用正則驗證真假身份證 身份證號碼驗證

<?php 
$IDCard = new IDCard(); 
var_dump($IDCard::isCard($_GET['card'])); 

/** 
 * 身份證處理類 
 */
class IDCard { 

    //檢證身份證是否正確 
    public static function isCard($card) { 
        $card = self::to18Card($card); 
        if (strlen($card) != 18) { 
            return false; 
        } 

        $cardBase = substr($card, 0, 17); 

        return (self::getVerifyNum($cardBase) == strtoupper(substr($card, 17, 1))); 
    } 

  
    //格式化15位身份證號碼為18位 
    public static function to18Card($card) { 
        $card = trim($card); 

        if (strlen($card) == 18) { 
            return $card; 
        } 

        if (strlen($card) != 15) { 
            return false; 
        } 

        // 如果身份證順序碼是996 997 998 999,這些是為百歲以上老人的特殊編碼 
        if (array_search(substr($card, 12, 3), array('996', '997', '998', '999')) !== false) { 
            $card = substr($card, 0, 6) . '18' . substr($card, 6, 9); 
        } else { 
            $card = substr($card, 0, 6) . '19' . substr($card, 6, 9); 
        } 
        $card = $card . self::getVerifyNum($card); 
        return $card; 
    } 

    // 計算身份證校驗碼,根據國家標準gb 11643-1999 
    private static function getVerifyNum($cardBase) { 
        if (strlen($cardBase) != 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($cardBase); $i++) { 
            $checksum += substr($cardBase, $i, 1) * $factor[$i]; 
        } 

        $mod = $checksum % 11; 
        $verify_number = $verify_number_list[$mod]; 

        return $verify_number; 
    } 
} 
 


相關推薦

php不用驗證真假身份證 身份證號碼驗證

<?php $IDCard = new IDCard(); var_dump($IDCard::isCard($_GET['card'])); /** * 身份證處理類 */ class IDCard { //檢證身份證是否正確

實現二代身份證號碼驗證詳解

最近專案需要對身份證進行比較合理的篩選,並不想用到第三方介面,所以寫了個方法: 包括支援身份證號合法性驗證, 支援18位身份證號,支援地址編碼、出生日期、校驗位驗證. 基本上這樣就可以了. IdCo

jQuery:電話、身份證、郵箱簡單校驗

toast title 常用 輸入數據 存在 pan test mail col if (!(/^1[3,5,6,7,8,9]\d{9}$/).test(e.detail.value.data_phone)) { wx.showToast({

表達式匹配身份證 電話號碼 郵箱 住宅電話 郵編等

ext 大寫字母 nsh 辦理 regexp nbsp 新的 pat 中文 # -*- coding: utf-8 -*- import re tt1 = "13143567781" tt2=‘[email protected]‘ tt3=‘4110241945111

ES01 數據類型、表達式、身份證校驗

uil component his 順序 field num core input cor 1 基本數據類型   參見W3C的教程即可 2 正則表達式   參考博文:點擊前往 3 身份證校驗   參考博文:點擊前往 <div class="panel panel-

簡單 ajax+php驗證

HTML 登錄檔單 <!DOCTYPE html> <html lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; cha

PHP常用驗證

手機號,身份證,ip驗證 //正則驗證手機號 正確返回 true function preg_mobile($mobile) { if(preg_match("/^1[34578]\d{9}$/", $mobile)) { return TRUE; } else {

原生態php通過dom獲取div/table裡面的內容,不用

原生態php獲取網頁標籤裡面的內容,不用外掛!不用正則,直接一把摳出來! error_reporting(E_ALL); $out=_getUrl('http://www.gdczepb.gov.

PHP常用()表單驗證

這些天一直在整理專案,就把一些常用的總結了一下. <?php /** * 頁面作用:常用表單驗證類 */ class class_post { //驗證是否為指定長度的字母/數字組合 function fun_text1($num1,$num2,$str) {

php驗證字串是否為數字

方法一 php中利用正則表示式驗證字串是否為數字一件非常容易的事情,最主要的是如何寫好正則表示式以及掌握正則表示式的寫法,在此利用正則表示式的方式來列舉一下判斷數字的方法。 <? if($str) { if(eregi("^[0-9]+$",$str))

表示式校驗身份證

最近在看正則表示式的一些東西,突然想起之前寫的一個關於身份證號碼校驗的小程式。當時寫身份證的校驗的時候,沒有考慮到輸入格式的校驗。程式的健壯性很差,現在我就用正則表示式來做身份證格式校驗,體驗一下正則表示式的奇妙用法。 正則表示式是對字串操作的一種邏輯公式,就

PHP 常用表達式

參考 arr replace search 上一個 tput 位或 $1 以及 PHP代碼 $str = preg_replace("/(<a.*?>)(.*?)(<\/a>)/", ‘\1<span class="link">\2<

前端學PHP表達式基礎語法

版本 得到 則表達式 特性 邊界 包括 報錯 正則表達式基礎 性能提升 前面的話   正則表達式是用於描述字符排列和匹配模式的一種語法規則。它主要用於字符串的模式分割、匹配、查找及替換操作。在PHP中,正則表達式一般是由正規字符和一些特殊字符(類似於通配符)聯合構成的一個文

PHP表達式

explode perl 並且 大小寫 返回 完成 off grep 次數 正則表達式 PHP支持的正則表達式有兩套,一套是PCRE,與perl兼容的正則表達式,以preg_為前綴的函數,另外一套是POSIX擴展語法的正則表達式,使用以ereg_為前綴的函數,PCRE提供的

php 常用表達 郵箱 手機號啥的

mail con ephone log passwords 密碼 mob bsp 郵箱 class RegexConst { const REGEX_MOBLIE_86 = ‘/^1(3|4|5|7|8)\d{9}$/‘;//中國手機號 const REG

php preg表達式的組成部分

多次 一個 原子 反向 小括號 轉義字符 span 括號 至少 定界符號 : 多種都可以,常用為// 原子 : 最小的一個匹配單位 (放在定界符中),在一個正則表達式中,至少要有一個原子 1,打印字符(a-z A-Z 0-9 ~!@#$%^&*(

php 常用

style UNC php 常用 col false code pan class 1 手機 /^1[34578]\d{9}$/2 qq /^[1-9][0-9]{5,10}$/3 郵箱 /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((

表達式之 數據驗證 與 文本替換

密碼 表達 個數字 repl 字符 密碼強度 身份證 replace style 一、數據驗證 用戶名正則:4到16位(字母 數字 下劃線 減號); 密碼強度正則:最少6位,包括至少1個,大寫字母,1個小寫字母,1個數字,1個特殊字符; EMAIL正則:; 身份證號正則:;

php 常用表示式彙總

1.    平時做網站經常要用正則表示式,下面是一些講解和例子,僅供大家參考和修改使用:  2.    "^\d+$"  //非負整數(正整數 + 0)  3.   &n

php表示式詳解

概述 正則表示式是一種描述字串結果的語法規則,是一個特定的格式化模式,可以匹配、替換、擷取匹配的字串。常用的語言基本上都有正則表示式,如JavaScript、java等。其實,只有瞭解一種語言的正則使用,其他語言的正則使用起來,就相對簡單些。文字主要圍繞解決下面問題展開。 有哪些常用的