【四】PHP實用自定義函數-校驗篇

前言

這篇文章的自定義函數,主要說關於常見的數據校驗的問題,有句話怎麼說來着:「不少事不問對錯,但求無愧於心。」,這句話也許在其餘方面可行,可是對於咱們開發過程當中,是確定不能這麼幹的,必須有嚴格的校驗規則,不然就很容易出問題。php

好了,就不蝦扯蛋了,直接說正事,我後續會陸續寫一些PHP開發中實用的一些自定義函數,方便用到的朋友,可以快速開發和使用。git

校驗是否爲合法格式的手機號

咱們都知道,手機號是11位數字,都是1開頭,好比個人手機號碼是19988886666,最基礎的能夠直接校驗1開頭的11位數字,那麼正則表達式爲/^1\d{10}$/,這樣的話,任何1開頭的11位數字都可以校驗經過,這是最簡單的,固然,這種粗活,咱們確定不能幹,必須得把活幹細緻了,立刻安排……github

/** * 校驗是否爲合法格式的手機號 * @param string $mobile 手機號碼 * @return bool */
function check_mobile($mobile = '') {
    // 非數字直接false
    if (!is_numeric($mobile)) {
        return false;
    }
    $pattern = '/^13[\d]{9}$|^14[5,7]{1}\d{8}$|^15[^4]{1}\d{8}$|^17[0,6,3,7,8]{1}\d{8}$|^18[\d]{9}$|^19[9]{1}\d{8}$/';
    $res = preg_match($pattern, $mobile) ? true : false;
    return $res;
}
複製代碼

校驗是否爲合法格式的郵箱

郵箱,也是常做爲標識用戶的信息,由於一個郵箱號碼,都是惟一屬於一我的的,當須要手機用戶的郵箱號碼的時候,就須要校驗用戶輸入的是不是正確格式的郵箱,不然就容易鬧笑話或者出錯,好比你原本想要一個郵箱,結果人家給了你一個QQ號,徹底對不上啊,這不就尷尬了嗎,因此,必須嚴格校驗,不符合規則的一概不接收,必須作一個有原則的人,你懂的……正則表達式

/** * 校驗是否爲合法格式的郵箱 * @param string $email 郵箱 * @return bool */
function check_email($email = '') {
    $pattern = '/([\w\-]+\@[\w\-]+\.[\w\-]+)/';
    $res = preg_match($pattern, $email) ? true : false;
    return $res;
}
複製代碼

校驗是否爲合法格式的電話號碼

如今手機流行的年代,固話已經不多了,基本都是公司或者單位用,那麼固話的格式又是怎麼樣的呢,通常分爲[區號]-[號碼],區號通常爲3-4個數字,第一位都是0,好比北京的區號是010,而深圳的區號是0755,那麼號碼通常也是7-8位數字,好比深圳某房地產開發商電話爲88886666,那麼實際電話號碼就是0755-88886666,這就好辦了。函數

/** * 校驗是否爲合法格式的電話號碼 * @param string $telephone 電話號碼 * @return bool */
function check_telephone($telephone = '') {
    $pattern = '/^(0[0-9]{2,3})?[-]?\d{7,8}$/';
    $res = preg_match($pattern, $telephone) ? true : false;
    return $res;
}
複製代碼

校驗是否爲合法的郵政編碼

上面剛說了區號,怎麼能忘了郵政編碼呢,好比:廣東省深圳市福田區郵編是518000,而全國郵政編碼都是6位數字,那就簡單了,話很少說,直接開幹……post

/** * 校驗是否爲合法的郵政編碼 * @param string $code 郵政編碼 * @return bool */
function check_post_code($code = '') {
    $pattern = '/\d{6}/';
    $res = preg_match($pattern, $code) ? true : false;
    return $res;
}
複製代碼

校驗是否爲合法的IP地址

IP地址做爲標識一臺電腦的地址,好比局域網內,分配給你的IP地址多是192.168.1.20,而每臺機器或者設備,都會有一個IP地址,經過這個實際的IP地址,可以查到地址定位信息,不少公安辦案,就是這麼來的,只要綁定了你的IP地址,就可以定位而且實施抓捕工做的;有點扯遠了,IP地址的格式都是四段數字,經過三個點.來鏈接,具體的校驗方法以下:學習

/** * 校驗是否爲合法的IP地址 * @param string $ip IP地址 * @return bool */
function check_ip($ip = '') {
    $pattern = '/^(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])$/';
    $res = preg_match($pattern, $ip) ? true : false;
    return $res;
}
複製代碼

校驗是否爲合法的身份證號

咱們如今的身份證號,都是18位的,之前15位的,我就說了,你們開發過程當中有這需求的話,能夠單獨網上查資料看一下,話很少說,直接coding……網站

/** * 校驗是否爲合法的身份證號 * @param string $id_card 身份證號 * @return bool */
function check_id_card($id_card = '') {
    $pattern = '/^\d{6}((1[89])|(2\d))\d{2}((0\d)|(1[0-2]))((3[01])|([0-2]\d))\d{3}(\d|X)$/i';
    $res = preg_match($pattern, $id_card) ? true : false;
    return $res;
}
複製代碼

校驗指定範圍長度的字符串名稱

常常在表單錄入的時候,須要錄入例如用戶名稱、信息介紹等字符串類的文字說明,通常都是限制輸入多少個字符的,有多是中文,有多是英文,也有多是中英文混合的那種,我是個善良的人,固然替你們考慮到位了,伺候舒服了才行。ui

/** * 校驗指定範圍長度的字符串名稱 * @param string $name 名稱 * @param int $min 最小長度 * @param int $max 最大長度 * @param string $char 字符串類型:EN英文,CN中文,ALL所有字符 * @return bool */
function check_name($name = '', $min = 2, $max = 20, $char = 'ALL') {
    switch ($char) {
        case 'EN':
            $pattern = '/^[a-zA-Z]{' . $min . ',' . $max . '}$/iu';
            break;
        case 'CN':
            $pattern = '/^[_\x{4e00}-\x{9fa5}]{' . $min . ',' . $max . '}$/iu';
            break;
        default:
            $pattern = '/^[_\w\d\x{4e00}-\x{9fa5}]{' . $min . ',' . $max . '}$/iu';
    }
    $res = preg_match($pattern, $name) ? true : false;
    return $res;
}
複製代碼

校驗是否爲合法格式的日期

所謂的日期,一般來講都是指的年-月-日,好比,我要獲取當前時間的年月日,能夠經過date('Y-m-d', time())拿到,若是這個日期是外部其餘用戶傳入的值呢,你怎麼知道他是否會老老實實的傳遞一個年月日的合法數據給你呢,也許他傳遞給你個2020-99-80,你看看這個日期,是否是很彆扭很嚇人,因此,有必要的時候,仍是要校驗一下日期的合理性。編碼

/** * 校驗是否爲合法格式的日期 * @param string $date 日期 * @param string $sep 分隔符,默認爲橫線- * @return bool */
function check_date($date = '', $sep = '-') {
    $date_arr = explode($sep, $date);
    $res = false;
    // 校驗日期是否爲合法數字
    if (count($date_arr) == 3 && is_numeric($date_arr[0]) && is_numeric($date_arr[1]) && is_numeric($date_arr[2])) {
        $res = checkdate($date_arr[1], $date_arr[2], $date_arr[0]);
    }
    return $res;
}
複製代碼

校驗是否爲合法格式的時間

校驗完了日期,確定不會落下時間啊,時間即時:分:秒,我就很少BB了,省得被嫌棄,直接安排就完事。

/** * 校驗是否爲合法格式的時間 * @param string $time 時分秒時間 * @param string $sep 分隔符,默認爲冒號: * @return bool */
function check_time($time = '', $sep = ":") {
    $time_arr = explode($sep, $time);
    $res = false;
    // 校驗時間的時分秒是否在合理範圍內
    if (count($time_arr) == 3 && is_numeric($time_arr[0]) && is_numeric($time_arr[1]) && is_numeric($time_arr[2])) {
        if (($time_arr[0] >= 0 && $time_arr[0] <= 23) && ($time_arr[1] >= 0 && $time_arr[1] <= 59) && ($time_arr[2] >= 0 && $time_arr[2] <= 59)) {
            $res = true;
        }
    }
    return $res;
}
複製代碼

自定義函數源碼

爲了方便,我把我整理的所有自定義函數,都放到一個文件中,而且上傳到同性交友網站GitHub上了,方便交流和使用,也方便你們幫我排錯,須要的同窗自取便可,我會不定時更新,地址以下:

函數源碼地址:github.com/gxcuizy/Blo…

最後

我後續會慢慢更新其餘的實用自定義函數,若是你們有其餘好玩的、好用的歡迎分享出來,你們一塊兒學習和交流。對了,若是有說的不對的或者錯誤的地方,請你們指出來,我會努力改進,謝謝。

相關文章
相關標籤/搜索