From faf3eed28ebbd3513e240f4d51de7c4d6175a78a Mon Sep 17 00:00:00 2001 From: inhere Date: Sun, 26 Apr 2020 22:23:49 +0800 Subject: [PATCH] update some format --- src/Valid.php | 6 +++--- src/Validators.php | 37 ++++++++++++++++++++++++------------- 2 files changed, 27 insertions(+), 16 deletions(-) diff --git a/src/Valid.php b/src/Valid.php index 60c7fd4..b4a5760 100644 --- a/src/Valid.php +++ b/src/Valid.php @@ -7,7 +7,7 @@ use function is_numeric; /** - * Class Valid - Simple Data Validator + * Class Valid - Simple Data Validator TODO * * @package Inhere\Validate */ @@ -42,9 +42,9 @@ public function getData(): array return self::$data; } - /********************************************************************************************** + /************************************************************************* * =========== validate data field value and return - *********************************************************************************************/ + *************************************************************************/ /** * @param string $field diff --git a/src/Validators.php b/src/Validators.php index 65e6663..dbe89e6 100644 --- a/src/Validators.php +++ b/src/Validators.php @@ -59,6 +59,12 @@ class Validators { use NameAliasTrait; + public const REGEX_DATE = '/^([\d]{4})-((?:0?[\d])|(?:1[0-2]))-((?:0?[\d])|(?:[1-2][\d])|(?:3[01]))( [\d]{2}:[\d]{2}:[\d]{2})?$/'; + + public const REGEX_DATE_FMT = '/^([\d]{4})-((0?[\d])|(1[0-2]))-((0?[\d])|([1-2][\d])|(3[01]))( [\d]{2}:[\d]{2}:[\d]{2})?$/'; + + public const REGEX_ABS_URL = '/^(https?:)?\/\/[$~:;#,%&_=\(\)\[\]\.\? \+\-@\/a-zA-Z0-9]+$/'; + /** * @var array */ @@ -1290,33 +1296,33 @@ public static function afterOrEqualDate($val, $afterDate): bool /** * Check for date format * - * @param string $date Date to validate + * @param string|mixed $date Date to validate * * @return bool Validity is ok or not */ public static function isDateFormat($date): bool { - return (bool)preg_match( - '/^([\d]{4})-((0?[\d])|(1[0-2]))-((0?[\d])|([1-2][\d])|(3[01]))( [\d]{2}:[\d]{2}:[\d]{2})?$/', - $date - ); + if (!$date || !is_string($date)) { + return false; + } + + return 1 === preg_match(self::REGEX_DATE_FMT, $date); } /** * Check for date validity * - * @param string $date Date to validate + * @param string|mixed $date Date to validate * * @return bool Validity is ok or not */ public static function isDate($date): bool { - if (!preg_match( - '/^([\d]{4})-((?:0?[\d])|(?:1[0-2]))-((?:0?[\d])|(?:[1-2][\d])|(?:3[01]))( [\d]{2}:[\d]{2}:[\d]{2})?$/', - $date, - $matches - ) - ) { + if (!$date || !is_string($date)) { + return false; + } + + if (!preg_match(self::REGEX_DATE, $date, $matches)) { return false; } @@ -1392,6 +1398,11 @@ public static function isFloat($float): bool return (string)((float)$float) === (string)$float; } + /** + * @param float|mixed $float + * + * @return bool + */ public static function isUnsignedFloat($float): bool { if (!is_scalar($float)) { @@ -1486,7 +1497,7 @@ public static function absoluteUrl($url): bool return false; } - return 1 === preg_match('/^(https?:)?\/\/[$~:;#,%&_=\(\)\[\]\.\? \+\-@\/a-zA-Z0-9]+$/', $url); + return 1 === preg_match(self::REGEX_ABS_URL, $url); } /**