php常用函数(一)格式验证篇

验证手机号是否正确

/**
 * 验证手机号是否正确
 * @param INT $mobile
 */
function isMobile($mobile)
{
    if (is_numeric($mobile)) {
        return preg_match('#^13[\d]{9}$|^14[5,7]{1}\d{8}$|^15[^4]{1}\d{8}$|^17[0,6,7,8]{1}\d{8}$|^18[\d]{9}$#', $mobile) ? true : false;   
    }
    return false;
}

验证用户名

/**
 * 验证用户名
 * @param string $username
 * 用户名2-18个字符
 * 开头只能为a-z,A-Z以及中文非符号字符
 */
function isUserName($username)
{
    $mb_len = mb_strlen($username, 'utf-8');
    if ($mb_len >= 2 && $mb_len <= 18) {//长度不对
        if (preg_match('/^[a-zA-Z\x{4E00}-\x{9FFF}][a-zA-Z0-9_\x{4E00}-\x{9FFF}]+$/u', $username)) {
            return true;
        }
    }
    return false;
}

检查是否属于身份证号

/**
 * 检查是否属于身份证号
 * @param  string $number 传入的身份证号
 * @return bool
 */
function isIdCard($number)
{
    if (empty($number)) {
        return false;
    }
    // 转化为大写,如出现x
    $number = strtoupper($number);
    //加权因子 
    $wi = array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
    //校验码串 
    $ai = array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
    //按顺序循环处理前17位 
    $sigma = 0;
    for ($i = 0; $i < 17; $i++) {
        //提取前17位的其中一位,并将变量类型转为实数 
        $b = (int)$number{$i};
        //提取相应的加权因子 
        $w = $wi[$i];
        //把从身份证号码中提取的一位数字和加权因子相乘,并累加
        $sigma += $b * $w;
    }
    //计算序号 
    $snumber = $sigma % 11;
    //按照序号从校验码串中提取相应的字符进行比较
    if ($number{17} == $ai[$snumber]) {
        return true;
    } else {
        return false;
    }
}

根据身份证号码获取性别

/**
 * 根据身份证号码获取性别
 * @param  string $cid 身份证号
 * @return string 性别
 */
function getSex($cid)
{
    if (isIdCard($cid)) {
        return (int)substr($cid, 16, 1) % 2 === 0 ? '女士' : '先生';
    }
    return '';
}

检测E-Mail格式

/**
 * 检测E-Mail格式
 * @param string $email
 * email大于6个字符
 */
function is_email($email) 
{
	return strlen($email) > 6 && preg_match("/^[\w\-\.]+@[\w\-\.]+(\.\w+)+$/",$email);
}

  

验证手机号是否正确

/**
 * 验证手机号是否正确
 * @param INT $mobile
 */
function isMobile($mobile)
{
    if (is_numeric($mobile)) {
        return preg_match('#^13[\d]{9}$|^14[5,7]{1}\d{8}$|^15[^4]{1}\d{8}$|^17[0,6,7,8]{1}\d{8}$|^18[\d]{9}$#', $mobile) ? true : false;   
    }
    return false;
}

验证用户名

/**
 * 验证用户名
 * @param string $username
 * 用户名2-18个字符
 * 开头只能为a-z,A-Z以及中文非符号字符
 */
function isUserName($username)
{
    $mb_len = mb_strlen($username, 'utf-8');
    if ($mb_len >= 2 && $mb_len <= 18) {//长度不对
        if (preg_match('/^[a-zA-Z\x{4E00}-\x{9FFF}][a-zA-Z0-9_\x{4E00}-\x{9FFF}]+$/u', $username)) {
            return true;
        }
    }
    return false;
}

检查是否属于身份证号

/**
 * 检查是否属于身份证号
 * @param  string $number 传入的身份证号
 * @return bool
 */
function isIdCard($number)
{
    if (empty($number)) {
        return false;
    }
    // 转化为大写,如出现x
    $number = strtoupper($number);
    //加权因子 
    $wi = array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
    //校验码串 
    $ai = array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
    //按顺序循环处理前17 
    $sigma = 0;
    for ($i = 0; $i < 17; $i++) {
        //提取前17位的其中一位,并将变量类型转为实数 
        $b = (int)$number{$i};
        //提取相应的加权因子 
        $w = $wi[$i];
        //把从身份证号码中提取的一位数字和加权因子相乘,并累加
        $sigma += $b * $w;
    }
    //计算序号 
    $snumber = $sigma % 11;
    //按照序号从校验码串中提取相应的字符进行比较
    if ($number{17} == $ai[$snumber]) {
        return true;
    } else {
        return false;
    }
}

根据身份证号码获取性别

/**
 * 根据身份证号码获取性别
 * @param  string $cid 身份证号
 * @return string 性别
 */
function getSex($cid)
{
    if (isIdCard($cid)) {
        return (int)substr($cid, 16, 1) % 2 === 0 ? '女士' : '先生';
    }
    return '';
}

验证手机号是否正确

/**
 * 验证手机号是否正确
 * @param INT $mobile
 */
function isMobile($mobile)
{
    if (is_numeric($mobile)) {
        return preg_match('#^13[\d]{9}$|^14[5,7]{1}\d{8}$|^15[^4]{1}\d{8}$|^17[0,6,7,8]{1}\d{8}$|^18[\d]{9}$#', $mobile) ? true : false;   
    }
    return false;
}

检测E-Mail格式

/**
 * 检测E-Mail格式
 * @param string $email
 * email大于6个字符
 */
function is_email($email) 
{
	return strlen($email) > 6 && preg_match("/^[\w\-\.]+@[\w\-\.]+(\.\w+)+$/",$email);
}
posted @ 2020-03-31 21:55  灿钿  阅读(206)  评论(0编辑  收藏  举报