收集整理PHP常用自定义验证函数

收集整理平时常用的验证函数,函数主要收集自PHP框架及互联网。主要有检查输入的是否为数字、电话、手机、货币、电子邮件、中文、英文、身份证号、计算时间差、字符串截取等相关php函数:

/*
 -----------------------------------------------------------
 函数名称:isNumber
 简要描述:检查输入的是否为数字
 输入:string
 输出:boolean
 修改日志:------
 -----------------------------------------------------------
 */
function isNumber($val) {
    if (preg_match("/^[0-9]+$/", $val)) {
        return true;
    } else {
        return false;
    }
}

/*
 -----------------------------------------------------------
 函数名称:isPhone
 简要描述:检查输入的是否为电话
 输入:string
 输出:boolean
 修改日志:------
 -----------------------------------------------------------
 */
function isPhone($val) {
    //eg: xxx-xxxxxxxx-xxx | xxxx-xxxxxxx-xxx ...
    if (preg_match("/^((0\d{2,3})-)(\d{7,8})(-(\d{3,}))?$/", $val))
        return true;
    return false;
}

/*
 -----------------------------------------------------------
 函数名称:isMobile
 简要描述:检查输入的是否为手机号
 输入:string
 输出:boolean
 修改日志:------
 -----------------------------------------------------------
 */
function isMobile($val) {
    //该表达式可以验证那些不小心把连接符“-”写出“-”的或者下划线“_”的等等
    if (preg_match("/^(((\+)?\d{2,4})-)?\d{11}$/", $val))
        return true;
    return false;
}

/**
 * isCurrency() 是否为货币类型
 *+---------------------------------
 * @author Nzing  2011-11-15
 * @access public
 *+---------------------------------
 * @param string $val 须要处理的值
 *+---------------------------------
 * @return void
 */
function isCurrency($val) {
    if (preg_match("/^\d+(\.\d+)?$/", $val))
        return true;
    return false;
}

/*
 -----------------------------------------------------------
 函数名称:isPostcode
 简要描述:检查输入的是否为邮编
 输入:string
 输出:boolean
 修改日志:------
 -----------------------------------------------------------
 */
function isPostcode($val) {
    if (preg_match("/^[0-9]{4,6}$/", $val))
        return true;
    return false;
}

/*
 -----------------------------------------------------------
 函数名称:isEmail
 简要描述:邮箱地址合法性检查
 输入:string
 输出:boolean
 修改日志:------
 -----------------------------------------------------------
 */
function isEmail($val, $domain = "") {
    if (!$domain) {
        if (preg_match("/^[a-z0-9-_.]+@[\da-z][\.\w-]+\.[a-z]{2,4}$/i", $val)) {
            return true;
        } else
            return false;
    } else {
        if (preg_match("/^[a-z0-9-_.]+@" . $domain . "$/i", $val)) {
            return true;
        } else
            return false;
    }
}//end func

/*
 -----------------------------------------------------------
 函数名称:isName
 简要描述:姓名昵称合法性检查,只能输入中文英文
 输入:string
 输出:boolean
 修改日志:------
 -----------------------------------------------------------
 */
function isName($val) {
    if (preg_match("/^[\x80-\xffa-zA-Z0-9]{3,60}$/", $val))//2008-7-24
    {
        return true;
    }
    return false;
}

/*
 -----------------------------------------------------------
 函数名称:isNumberLength($theelement, $min, $max)
 简要描述:检查数字长度是否符合要求
 输入:mixed (数字 ,最小长度,最大长度)
 输出:boolean
 修改日志:------
 -----------------------------------------------------------
 */
function isNumLength($val, $min, $max) {
    $theelement = trim($val);
    if (preg_match("/^[0-9]{" . $min . "," . $max . "}$/", $val))
        return true;
    return false;
}

/*
 -----------------------------------------------------------
 函数名称:isNumberLength($theelement, $min, $max)
 简要描述:检查英文字符串长度是否符合要求
 输入:mixed (字符串,最小长度,最大长度)
 输出:boolean
 修改日志:------
 -----------------------------------------------------------
 */
function isEngLength($val, $min, $max) {
    $theelement = trim($val);
    if (preg_match("/^[a-zA-Z]{" . $min . "," . $max . "}$/", $val))
        return true;
    return false;
}

/*
 -----------------------------------------------------------
 函数名称:isEnglish
 简要描述:检查输入是否为英文
 输入:string
 输出:boolean
 作者:------
 修改日志:------
 -----------------------------------------------------------
 */
function isEnglish($theelement) {
    if (preg_match("[\x80-\xff].", $theelement)) {
        Return false;
    }
    Return true;
}

/*
 -----------------------------------------------------------
 函数名称:isChinese
 简要描述:检查是否输入为汉字
 输入:string
 输出:boolean
 修改日志:------
 -----------------------------------------------------------
 */
function isChinese($sInBuf) {
    $iLen = strlen($sInBuf);
    for ($i = 0; $i < $iLen; $i++) {
        if (ord($sInBuf{$i}) >= 0x80) {
            if ((ord($sInBuf{$i}) >= 0x81 
            && ord($sInBuf{$i}) = 0x40 && ord($sInBuf{$i + 1}) < 0x7E) 
            || (ord($sInBuf{$i + 1}) > 0x7E 
            && ord($sInBuf{$i + 1})  0xA0 
            && ord($sInBuf{$i}) < 0xAA) {
                    //有中文标点
                    return false;
                }
            } else {
                //有日文或其它文字
                return false;
            }
            $i++;
        } else {
            return false;
        }
    }
    return true;
}

/*
 -----------------------------------------------------------
 函数名称:isDate
 简要描述:检查日期是否符合0000-00-00
 输入:string
 输出:boolean
 修改日志:------
 -----------------------------------------------------------
 */
function isDate($sDate) {
    if (preg_match("/^[0-9]{4}\-[][0-9]{2}\-[0-9]{2}$/", $sDate)) {
        Return true;
    } else {
        Return false;
    }
}

/*
 -----------------------------------------------------------
 函数名称:isTime
 简要描述:检查日期是否符合0000-00-00 00:00:00
 输入:string
 输出:boolean
 修改日志:------
 -----------------------------------------------------------
 */
function isTime($sTime) {
    if (preg_match("/^[0-9]{4}\-[][0-9]{2}\-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}$/", $sTime)) {
        Return true;
    } else {
        Return false;
    }
}

/*
 -----------------------------------------------------------
 函数名称:isMoney($val)
 简要描述:检查输入值是否为合法人民币格式
 输入:string
 输出:boolean
 修改日志:------
 -----------------------------------------------------------
 */
function isMoney($val) {
    if (preg_match("/^[0-9]{1,}$/", $val))
        return true;
    if (preg_match("/^[0-9]{1,}\.[0-9]{1,2}$/", $val))
        return true;
    return false;
}

/*
 -----------------------------------------------------------
 函数名称:isIp($val)
 简要描述:检查输入IP是否符合要求
 输入:string
 输出:boolean
 修改日志:------
 -----------------------------------------------------------
 */
function isIp($val) {
    return (bool) ip2long($val);
}

/**
 +-----------------------------
 * 程序添加  身份证验证
 * 收集于internet
 +-----------------------------
 * revise author Nzing Jul 9, 2011
 +-----------------------------
 */
function isIdcard($str)//身份证正则
{
    return (preg_match('/^(\d{15}$|^\d{18}$|^\d{17}(\d|X|x))$/', $str)) ? true : false;
}

/**
 * 获取身份证号码信息
 *+---------------------------------
 * @author  Nzing  Jul 11, 2011
 * @access public
 *+---------------------------------
 * @param string $IDCard 身份证号
 *+---------------------------------
 * @return array=('birthday','six','flag')
 * birthday  返回生日 如:1989-04-11
 * six 返回性别  1男性 2女性
 * flag eq 1 小于18岁
 */
function getIDCardInfo($IDCard) {
    $birthday = '';
    $sex = '';
    $flag = '';
    $result = array();
    if (!preg_match("/^[1-9]([0-9a-zA-Z]{17}|[0-9a-zA-Z]{14})$/", $IDCard)) {
        echo "格式错误";
        $flag = 0;
    } else {
        if (strlen($IDCard) == 18) {
            $tyear = substr($IDCard, 6, 4);
            $tmonth = substr($IDCard, 10, 2);
            $tday = substr($IDCard, 12, 2);
            $sex = substr($IDCard, -2, 1) % 2 ? '1' : '2';
            if ($tyear > date("Y") || $tyear < (date("Y") - 100)) {
                $flag = 0;
            } elseif ($tmonth < 0 || $tmonth > 12) {
                $flag = 0;
            } elseif ($tday < 0 || $tday > 31) {
                $flag = 0;
            } else {
                $birthday = $tyear . "-" . $tmonth . "-" . $tday;
                if ((time() - mktime(0, 0, 0, $tmonth, $tday, $tyear)) 
                > 18 * 365 * 24 * 60 * 60) {
                    $flag = 0;
                } else {
                    $flag = 1;
                }
            }
        } elseif (strlen($IDCard) == 15) {
            $tyear = substr($IDCard, 6, 4);
            $tmonth = substr($IDCard, 10, 2);
            $tday = substr($IDCard, 12, 2);
            $sex = substr($IDCard, -1, 1) % 2 ? '1' : '2';
            if ($tyear > date("Y") || $tyear < (date("Y") - 100)) {
                $flag = 0;
            } elseif ($tmonth < 0 || $tmonth > 12) {
                $flag = 0;
            } elseif ($tday < 0 || $tday > 31) {
                $flag = 0;
            } else {
                $birthday = $tyear . "-" . $tmonth . "-" . $tday;
                if ((time() - mktime(0, 0, 0, $tmonth, $tday, $tyear)) 
                > 18 * 365 * 24 * 60 * 60) {
                    $flag = 0;
                } else {
                    $flag = 1;
                }
            }
        }
    }
    $result['flag'] = $flag;
    $result['birthday'] = $birthday;
    $result['sex'] = $sex;
    return $result;
}

/**
 * 获取指定时间当前时间的相差值getDiffDate()
 *+---------------------------------
 * @author  Nzing  Jul 20, 2011
 * @access public
 *+---------------------------------
 * @param string null
 *+---------------------------------
 * @return void
 */
//计算两个日期相差 年 月 日
function getDiffDate($date1, $date2 = null) {
    $date2 = empty($date2) ? date('Y-m-d') : $date2;
    if (strtotime($date1) > strtotime($date2)) {
        $ymd = $date2;
        $date2 = $date1;
        $date1 = $ymd;
    }
    list($y1, $m1, $d1) = explode('-', $date1);
    list($y2, $m2, $d2) = explode('-', $date2);
    $y = $m = $d = $_m = 0;
    $math = ($y2 - $y1) * 12 + $m2 - $m1;
    $y = floor($math / 12);
    $m = intval($math % 12);
    $d = (mktime(0, 0, 0, $m2, $d2, $y2) - mktime(0, 0, 0, $m2, $d1, $y2)) / 86400;
    if ($d < 0) {
        $m -= 1;
        $d += date('j', mktime(0, 0, 0, $m2, 0, $y2));
    }
    $m < 0 && $y -= 1;
    return array(
        'year' => $y,
        'month' => $m,
        'day' => $d
    );
}

/**
 * 计算中文字符串长度
 *+---------------------------------
 * @author Nzing
 * @access public
 * @version 1.0
 *+---------------------------------
 * @param mixed
 *+---------------------------------
 * @return void
 */

function utf8_strlen($string = null) {
    // 将字符串分解为单元
    preg_match_all("/./us", $string, $match);
    // 返回单元个数
    return count($match[0]);
}

/**
 +----------------------------------------------------------
 * 字符串截取,支持中文和其他编码
 +----------------------------------------------------------
 * @static
 * @access public
 +----------------------------------------------------------
 * @param string $str 需要转换的字符串
 * @param string $start 开始位置
 * @param string $length 截取长度
 * @param string $charset 编码格式
 * @param string $suffix 截断显示字符
 +----------------------------------------------------------
 * @return string
 +----------------------------------------------------------
 */
function msubstr($str, $start = 0, $length, $charset = "utf-8", $suffix = true) {
    if (!empty($str)) {
        $re['utf-8'] = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xff][\x80-\xbf]{3}/";
        $re['gb2312'] = "/[\x01-\x7f]|[\xb0-\xf7][\xa0-\xfe]/";
        $re['gbk'] = "/[\x01-\x7f]|[\x81-\xfe][\x40-\xfe]/";
        $re['big5'] = "/[\x01-\x7f]|[\x81-\xfe]([\x40-\x7e]|\xa1-\xfe])/";
        preg_match_all($re[$charset], $str, $match);
        $slice = join("", array_slice($match[0], $start, $length));
        if ($suffix && (utf8_strlen($str) >= ($length - $start)))
            return $slice . "…";
        return $slice;
    } else {
        return false;
    }
}


版权及转载说明

本站原创、转载文章欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区

本站转载文章版权归原作者所有,如发现本站文章涉嫌侵权请点击「联系我们」反馈,本站将立即给予删除

转载请注明:文章转载自:全分享社区 「http://www.aweb.cc

本文标题:收集整理PHP常用自定义验证函数

本文地址:http://www.aweb.cc/article/detail/id/473.html

swoole 1.7.3 发布,增加PH <<上一篇 下一篇>>yii2.0 Activeform表单部