php 常用驗證類及正則

來源:互聯網
上載者:User
Regex在遇到新的時候將會不斷更新

include "ValidateParameterConfig.php";
class Validation {private static function getRexp($rexp) {$_rexp = array ('letter_number'=>'/^[0-9A-Za-z]+$/',//只有字母數字包括大小寫'account'=>'/^[0-9A-Za-z_]+$/',//只有字母數字底線包括大小寫'ids'=>'/^[0-9]+(\,[0-9]+)*$/',//驗證多個id以','分割的類型 例如'1,2,3,4,5''number'=>'/^[0-9]+$/',//只可以使數字'personal_card'=>'/^[0-9A-Za-z]+$/',//身份證'email'=>'/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/',//郵箱'date'=>'/^((((19|20)\d{2})-(0?(1|[3-9])|1[012])-(0?[1-9]|[12]\d|30))|(((19|20)\d{2})-(0?[13578]|1[02])-31)|(((19|20)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|((((19|20)([13579][26]|[2468][048]|0[48]))|(2000))-0?2-29))$/'//日期,包含了閏年);if (isset($_rexp[$rexp])) {return $_rexp[$rexp];} else {return $rexp_not_defind;}}public static function validate($data, $config) {$_config = ValidateParameterConfig::getConfig($config);$k = self::allowExist($data, $_config);if ($k !== null) {return $k;}foreach($_config as $k=>$c) {if (isset($data[$k])){if(isset($c['rexp'])){if (self::vRexp( $data[$k], $c['rexp']) === false) {return $k;}}if (isset($c['length'])) {if (self::vLength($data[$k], $c['length'])){return $k;} }if (isset($c['min_length'])) {if (!self::vMinLength($data[$k], $c['min_length'])){return $k;} }if (isset($c['max_length'])) {if (!self::vMaxLength($data[$k], $c['max_length'])){return $k;} }}}return null;}private static function allowExist($data, $config){foreach ($config as $k=>$v) {if (!isset($v['allow_exist']) || $v['allow_exist'] == true) {if (!isset($data[$k])){return $k;}}}return null;}public static function vRexp($data, $rexp) {$_rexp = self::getRexp($rexp);if (preg_match($_rexp, $data) == false) {return false;}return true;}public static function vLength($data, $l) {if (strlen(trim($data)) == $l) {return false;}return true;}public static function vMinLength($data, $l) {if (strlen(trim($data)) < $l) {return false;}return true;}public static function vMaxLength($data, $l) {if (strlen(trim($data)) > $l) {return false;}return true;}public static function vLetterNumber($data) {if (preg_match(self::getRexp('letter_number'), $data) == false) {return false;}return true;}public static function vLetterNumber_($data) {if (preg_match(self::getRexp('letter_number_'), $data) == false) {return false;}return true;}public static function vNumber($data) {if (preg_match(self::getRexp('number'), $data) == false) {return false;}return true;}public static function vEmail($data) {if (preg_match(self::getRexp('email'), $data) == false) {return false;}return true;}


class ValidateParameterConfig {public static function getConfig ($key) {//'allow_exist'=>true或allow_exist不存在表示該參數必傳$_config = array('test'=>array('letter_number'=>array('rexp'=>'letter_number', 'allow_exist'=>true),'number'=>array('rexp'=>'number', 'min_length'=>1'allow_exist'=>false),'account'=>array('rexp'=>'account', 'max_length'=>20),));if (isset($_config[$key])) {return $_config[$key];} else {return $config_not_defind;}}}

使用例子:

從應用端發過來的參數為

$arr = array('letter_number'=>'abc123', 'account'=>'acb1234_');//參數驗證$_msg = Validation::validate($arr, 'test');if ($_msg !== null) {return $_msg . ' is invalid parameter';}
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.