php 自带匹配规则

<?php
/**
 * 数值验证类,类中的方法都是静态的,用于检测一个变量是否符合某种规则,不符合返回false,符合返回原值
 *
 */
class Validate
{
        /**
         * 验证是否为INT
         * @param $num 数字
         * @return false or $num
         */
        static function int($num)
        {
                return filter_var($num, FILTER_VALIDATE_INT);
        }
        /**
         * 验证是否为无符号整数UINT
         * @param $num
         * @return false or $num
         */
        static function uint($num)
        {
                $num = filter_var($num, FILTER_VALIDATE_INT);;
                if($num===false or $num<0) return false;
                else return $num;
        }
        /**
         * 验证是否为浮点型
         * @param $num 数字
         * @return false or $num
         */
        static function float($num)
        {
                return filter_var($num, FILTER_VALIDATE_FLOAT);
        }
        /**
         * 验证是否为无符号浮点型UFloat
         * @param $num 数字
         * @return false or $num
         */
        static function ufloat($num)
        {
                $num = filter_var($num, FILTER_VALIDATE_FLOAT);;
        if($num===false or $num<0) return false;
        else return $num;
        }
        /**
         * 验证是否为EMAIL
         * @param $str
         * @return false or $str
         */
        static function email($str)
        {
                return filter_var($str, FILTER_VALIDATE_EMAIL);
        }
        /**
         * 验证字符串格式
         * @param $str
         * @return false or $str
         */
        static function string($str)
        {
                return filter_var($str, FILTER_DEFAULT);
        }
        /**
         * 验证是否为IP地址
         * @param $str
         * @return false or $str
         */
        static function ip($str)
        {
                return filter_var($str, FILTER_VALIDATE_IP);
        }
        /**
         * 验证是否为URL
         * @param $str
         * @return false or $str
         */
        static function url($str)
        {
                return filter_var($str, FILTER_VALIDATE_URL);
        }
        /**
         * 过滤HTML,使参数为纯文本
         * @param $str
         * @return false or $str
         */
        static function text($str)
        {
                return filter_var($str, FILTER_SANITIZE_STRING);
        }
        /**
         * 检测是否为utf-8中文字符串
         * @param $str
         * @return false or $str
         */
        static function chinese($str)
        {
                $n = preg_match("/^([\\xE4-\\xE9][\\x80-\\xBF][\\x80-\\xBF])+$/",$str,$match);
                if($n===0) return false;
                else return $match[0];
        }
        /**
         * 检测是否为utf-8中文字符串
         * @param $str
         * @return false or $str
         */
    static function chinese_utf8($str)
        {
                $n = preg_match("/^[\x{4e00}-\x{9fa5}]+$/u",$str,$match);
                if($n===0) return false;
                else return $match[0];
        }
    /**
         * 检测是否为gb2312中文字符串
         * @param $str
         * @return false or $str
         */
    static function chinese_gb($str)
        {
                $n =  preg_match("/^[".chr(0xa1)."-".chr(0xff)."]+$/",$str,$match);
                if($n===0) return false;
                else return $match[0];
        }
        /**
         * 检测是否为自然字符串(可是中文,字符串,下划线,数字),不包含特殊字符串,只支持utf-8或者gb2312
         * @param $str
         * @return false or $str
         */
        static function realstring($str,$encode='utf8')
        {
            if($encode=='utf8') $n = preg_match('/^[\x{4e00}-\x{9fa5}|a-z|0-9|A-Z]+$/u',$str,$match);
            else $n = preg_match("/^[".chr(0xa1)."-".chr(0xff)."|a-z|0-9|A-Z]+$/",$str,$match);
                if($n===0) return false;
                else return $match[0];
    }
    /**
     * 检测是否为固定电话格式(可包含分机号)
     * @param $str
     * @return false or $str
     */
        static function tel($str)
        {
        $n = preg_match('/(\d{3})-(\d{8})-{0,1}([0-9]{0,4})|(\d{4})-(\d{7})-{0,1}([0-9]{0,4})$/',$str,$match);
        if($n===0) return false;
                else return $match[0];
        }
        /**
     * 检测是否一个英文单词,不含空格和其他特殊字符
     * @param $str
     * @return false or $str
     */
        static function word($str)
        {
                $n = preg_match('/^([a-zA-Z_]*)$/',$str,$match);
                if($n===0) return false;
                else return $match[0];
        }
        /**
     * 检测是否一个日期格式
     * @param $str
     * @return false or $str
     */
        static function date($str)
        {
            $n = preg_match('/[1-9][0-9][0-9][0-9]-[0-9]{1,2}-[0-9]{1,2}$/',$str,$match);
                if($n===0) return false;
                else return $match[0];
        }
        /**
     * 检测是否一个时间格式
     * @param $str
     * @return false or $str
     */
        static function time($str)
        {
                $n = preg_match('/[0-9]{1,2}(:[0-9]{1,2}){1,2}$/',$str,$match);
                if($n===0) return false;
                else return $match[0];
        }
        /**
     * 检测是否一个日期时间格式
     * @param $str
     * @return false or $str
     */
        static function datetime($value)
        {
            $n = preg_match('/[1-9][0-9][0-9][0-9]-[0-9]{1,2}-[0-9]{1,2} [0-9]{1,2}(:[0-9]{1,2}){1,2}$/',$str,$match);
                if($n===0) return false;
                else return $match[0];
        }
        /**
         * 检查是否ASSIC码
         * @param $value
         * @return true or false
         */
        static function assic($value)
        {
                $len = strlen($value);
                for ($i = 0; $i < $len; $i++) {
                        $ord = ord(substr($value, $i, 1));
                        if ($ord > 127) {
                                return false;
                        }
                }
                return $value;
        }
        /**
         * 检查是否为IP
         * @param $value
         * @return true or false
         */
        static function ipv4($str)
        {
            $n = preg_match('/[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}$/',$str,$match);
                if($n===0) return false;
                else return $match[0];
        }
        /**
         * 检测是否八进制数
         * @param $value
         * @return unknown_type
         */
        static function octal($str)
        {
            $n = preg_match('/0[1-7]*[0-7]+$/',$str,$match);
                if($n===0) return false;
                else return $match[0];
        }
    /**
         * 检测是否二进制数
         * @param $value
         * @return unknown_type
         */
        static function binary($str)
        {
            $n = preg_match('/[01]+$/',$str,$match);
                if($n===0) return false;
                else return $match[0];
        }
    /**
         * 检测是否十六进制数
         * @param $value
         * @return unknown_type
         */
        static function hex($str)
        {
            $n = preg_match('/0x[0-9a-f]+$/',$str,$match);
                if($n===0) return false;
                else return $match[0];
        }
    /**
         * 检测是否为域名
         * @param $value
         * @return unknown_type
         */
        static function domain($str)
        {
            $n = preg_match('/@([0-9a-z-_]+.)+[0-9a-z-_]+$/',$str,$match);
                if($n===0) return false;
                else return $match[0];
        }
}
?>

 

转载于:https://my.oschina.net/abulo/blog/264696

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值