php开发之常用验证方法
1.邮箱验证
function isEmail($email) { if (!$email) { return false; } return preg_match('/^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,4}$/', $email); }
function checkEmail($email) { return filter_var($email, FILTER_VALIDATE_EMAIL) }
2. 手机号验证
function isMobile($mobile) { if (!$mobile) { return false; } return preg_match('/^((\(d{2,3}\))|(\d{3}\-))?1(3|5|8|9)\d{9}$/', $mobile); }
/** * 验证手机号 * 13[0-9], 14[5,7], 15[0, 1, 2, 3, 5, 6, 7, 8, 9], 17[6, 7, 8], 18[0-9], 170[0-9] * 移动号段: 134,135,136,137,138,139,150,151,152,157,158,159,182,183,184,187,188,147,178,1705 * 联通号段: 130,131,132,155,156,185,186,145,176,1709 * 电信号段: 133,153,180,181,189,177,1700 */ function mobile($mobile) { if(preg_match('/^1(3[0-9]|4[57]|5[0-35-9]|8[0-9]|70)\\d{8}$/', $mobile)){ return 1; }elseif(preg_match('/(^1(3[4-9]|4[7]|5[0-27-9]|7[8]|8[2-478])\\d{8}$)|(^1705\\d{7}$)/', $mobile)){ return 2; }elseif(preg_match('/(^1(3[0-2]|4[5]|5[56]|7[6]|8[56])\\d{8}$)|(^1709\\d{7}$)/', $mobile)){ return 3; }elseif(preg_match('/(^1(33|53|77|8[019])\\d{8}$)|(^1700\\d{7}$)/', $mobile)){ return 4; }else{ return 0; } }
3. 邮编验证
function isPostalCode($postalCode) { if (!$postalCode) { return false; } return preg_match("/^[1-9]\d{5}$/", $postalCode); }
4. ip验证
function isIPAddress($IPAddress) { if (!$IPAddress) { return false; } return preg_match("/^([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])" . "(\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3}$/", $IPAddress); }
5. 身份证验证
function isIDCard($IDCard) { if (!$IDCard) { return false; } return preg_match('/(^([\d]{15}|[\d]{18}|[\d]{17}x)$)/', $IDCard); }
6.检查中文
function isCn($str){ if(preg_match("/[\x{4e00}-\x{9fa5}]+/u", $str)) { return true; } return false; }
7.检查数字
function isNumber($str){ if(preg_match('/^\d+$/', $str)) { return true; } return false; }
8.检查是否每位相同
function isNumSame($str){ if(preg_match('/^(\w)\1+$/', $str)) { return true; } return false; }
9.检查是否为空
function isEmpty($str){ if(preg_match('/^\s*$/', $str)) { return true; } return false; }
10.检测是否为合法url
function isUrl($url){ if(strpos('kkk' . $url, 'http')){ return true; } return false; }
11.检测一组字符是否有可能组成手机号码
function willMobile($mobile) { if (!$mobile) { return false; } return preg_match('/^((\(d{2,3}\))|(\d{3}\-))?1(3|5|8|9)\d{0,9}$/', $mobile); }
12.检测是否是电话号码
function isPhoneNumber($phone) { if (!$phone) { return false; } return preg_match('/^((0\d{3}[\-])?\d{7}|(0\d{2}[\-])?\d{8})?$/', $phone); }
13.检测是否是地区码
function isAreaCode($code){ if (!$code) { return false; } return preg_match('/^(0\d{3})|(0\d{2})$/', $code); }
14.参数验证
/** * 参数验证 * @param $para 数据 * @param $standard 参数要求 * @return boolen */ public static function verifyParams($para, $standard) { if ($para === false || empty($para)) { return false; } foreach ($standard['REQUIRED'] as $k => $v) { if (!array_key_exists($k, $para)) { return false; } if(empty($para[$k])){ return false; } if ('string' == $v) { if (false === is_string($para[$k])) { return false; } } else if ('int' == $v) { if ((string)((int)($para[$k])) != $para[$k]) { return false; } } else{ return false; } } foreach ($standard['OPTIONAL'] as $k => $v) { if (!array_key_exists($k, $para)) { continue; } if ('string' == $v) { if (!empty($para[$k]) && false === is_string($para[$k])) { return false; } } else if ('int' == $v) { if (!empty($para[$k]) && (string)((int)($para[$k])) != $para[$k]) { return false; } } else { return false; } } return true; }
15.验证用户名称
function checkUsername() { return preg_match('/^[a-z\d_]{5,20}$/i', $username); }
16.验证信用卡号
function checkCardNum($cc) { return preg_match('/^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6011[0-9]{12}|3(?:0[0-5]|[68][0-9])[0-9]{11}|3[47][0-9]{13})$/', $cc) }
17.验证域名
function checkDns($url) { return preg_match('/^(http|https|ftp):\/\/([A-Z0-9][A-Z0-9_-]*(?:\.[A-Z0-9][A-Z0-9_-]*)+):?(\d+)?\/?/i', $url); }
18.过滤内容
function filterExp(&$value){ if (preg_match_all('/^(EXP|NEQ|GT|EGT|LT|ELT|OR|XOR|LIKE|NOTLIKE|NOT BETWEEN|NOTBETWEEN|BETWEEN|NOTIN|NOT IN|IN)$/i', $value)) { $value .= ' '; } }
19.是否是微信中
function is_weixin(){ if ( strpos($_SERVER['HTTP_USER_AGENT'], 'MicroMessenger') !== false ) { return true; } return false; }
20.密码验证
function verifyPassword($password){ // 1.排除中文 if(preg_match("/[\x{4e00}-\x{9fa5}]+/u",$password)){ return '含有中文字符'; } // 2.过滤空白字符 if(preg_match("/\s+/",$password)){ return '含有空白字符'; } // 3.验证密码长度 $length = strlen($password); if($length < 6 || $length > 20){ return '密码长度不够或超出'; } $banPasswords = ['123456','654321','112233']; // 4.简单字符排除 if(in_array($password,$banPasswords)){ return '密码过于简单'; } $count = 1; // 5.是否是单一密码 for($i = 1 ; $i < $length ; $i++){ if($password[$i] == $password[0]){ $count++; } } if($count == $length){ return '密码单一'; } return true; }
21.检测字符集是否是utf-8编码
public function is_utf8($str) { $c = 0; $b = 0; $bits = 0; $len = strlen($str); for($i = 0; $i < $len; $i++) { $c = ord($str[$i]); if ($c > 128) { if (($c >= 254)) return false; elseif ($c >= 252) $bits = 6; elseif ($c >= 248) $bits = 5; elseif ($c >= 240) $bits = 4; elseif ($c >= 224) $bits = 3; elseif ($c >= 192) $bits = 2; else return false; if (($i + $bits) > $len) return false; while ($bits > 1) { $i++; $b = ord($str[$i]); if ($b < 128 || $b > 191) return false; $bits--; } } } return true; }
22.检测session是否开启
function is_session_started() { if ( php_sapi_name() !== 'cli' ) { if ( version_compare(phpversion(), '5.4.0', '>=') ) { return session_status() === PHP_SESSION_ACTIVE ? TRUE : FALSE; } else { return session_id() === '' ? FALSE : TRUE; } } return FALSE; } // Example if ( is_session_started() === FALSE ) session_start(); session 三种状态: PHP_SESSION_DISABLED 会话被禁用 PHP_SESSION_NONE 会话启用,但会话不存在 PHP_SESSON_ACTIVE 会话启用,同时会话存在
23.验证是否是https协议
function checkSsl() { return (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') || (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https'); }
24.验证图片是否是真实GIF图
function checkGif($img) { if(!file_exists($img)){ return -1; } $handle = fopen($img,'rb'); $img = fread($handle,'1024'); fclose($handle); return strpos($img,chr(0x21).chr(0xff).chr(0x0b).'NETSCAPE2.0') === FALSE ? 0 : 1; }
25.判断数组是否是多维数组
function checkMultArray($arr) { return count($arr) !== count($arr,1); }