@@ -59,6 +59,12 @@ class Validators
59
59
{
60
60
use NameAliasTrait;
61
61
62
+ public const REGEX_DATE = '/^([\d]{4})-((?:0?[\d])|(?:1[0-2]))-((?:0?[\d])|(?:[1-2][\d])|(?:3[01]))( [\d]{2}:[\d]{2}:[\d]{2})?$/ ' ;
63
+
64
+ 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})?$/ ' ;
65
+
66
+ public const REGEX_ABS_URL = '/^(https?:)?\/\/[$~:;#,%&_=\(\)\[\]\.\? \+\-@\/a-zA-Z0-9]+$/ ' ;
67
+
62
68
/**
63
69
* @var array
64
70
*/
@@ -1290,33 +1296,33 @@ public static function afterOrEqualDate($val, $afterDate): bool
1290
1296
/**
1291
1297
* Check for date format
1292
1298
*
1293
- * @param string $date Date to validate
1299
+ * @param string|mixed $date Date to validate
1294
1300
*
1295
1301
* @return bool Validity is ok or not
1296
1302
*/
1297
1303
public static function isDateFormat ($ date ): bool
1298
1304
{
1299
- return (bool )preg_match (
1300
- '/^([\d]{4})-((0?[\d])|(1[0-2]))-((0?[\d])|([1-2][\d])|(3[01]))( [\d]{2}:[\d]{2}:[\d]{2})?$/ ' ,
1301
- $ date
1302
- );
1305
+ if (!$ date || !is_string ($ date )) {
1306
+ return false ;
1307
+ }
1308
+
1309
+ return 1 === preg_match (self ::REGEX_DATE_FMT , $ date );
1303
1310
}
1304
1311
1305
1312
/**
1306
1313
* Check for date validity
1307
1314
*
1308
- * @param string $date Date to validate
1315
+ * @param string|mixed $date Date to validate
1309
1316
*
1310
1317
* @return bool Validity is ok or not
1311
1318
*/
1312
1319
public static function isDate ($ date ): bool
1313
1320
{
1314
- if (!preg_match (
1315
- '/^([\d]{4})-((?:0?[\d])|(?:1[0-2]))-((?:0?[\d])|(?:[1-2][\d])|(?:3[01]))( [\d]{2}:[\d]{2}:[\d]{2})?$/ ' ,
1316
- $ date ,
1317
- $ matches
1318
- )
1319
- ) {
1321
+ if (!$ date || !is_string ($ date )) {
1322
+ return false ;
1323
+ }
1324
+
1325
+ if (!preg_match (self ::REGEX_DATE , $ date , $ matches )) {
1320
1326
return false ;
1321
1327
}
1322
1328
@@ -1392,6 +1398,11 @@ public static function isFloat($float): bool
1392
1398
return (string )((float )$ float ) === (string )$ float ;
1393
1399
}
1394
1400
1401
+ /**
1402
+ * @param float|mixed $float
1403
+ *
1404
+ * @return bool
1405
+ */
1395
1406
public static function isUnsignedFloat ($ float ): bool
1396
1407
{
1397
1408
if (!is_scalar ($ float )) {
@@ -1486,7 +1497,7 @@ public static function absoluteUrl($url): bool
1486
1497
return false ;
1487
1498
}
1488
1499
1489
- return 1 === preg_match (' /^(https?:)?\/\/[$~:;#,%&_=\(\)\[\]\.\? \+\-@\/a-zA-Z0-9]+$/ ' , $ url );
1500
+ return 1 === preg_match (self :: REGEX_ABS_URL , $ url );
1490
1501
}
1491
1502
1492
1503
/**
0 commit comments