<?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]; } } ?>