<?php
namespace ticky;
class validate {
public static function isEmail($email) {
return filter_var($email, FILTER_VALIDATE_EMAIL);
}
public static function isUrl($url) {
return preg_match(
'/^http[s]?:\/\/' .
'(([0-9]{1,3}\.){3}[0-9]{1,3}' . '|' . '([0-9a-z_!~*\'()-]+\.)*' . '([0-9a-z][0-9a-z-]{0,61})?[0-9a-z]\.' . '[a-z]{2,6})' . '(:[0-9]{1,4})?' . '((\/\?)|' . '(\/[0-9a-zA-Z_!~\*\'\(\)\.;\?:@&=\+\$,%#-\/]*)?)$/', $url
) == 1;
}
public static function isPhone($phone) {
return preg_match('/^1[34578]{1}\d{9}$/', trim($phone));
}
public static function isIP($ip, $version = null) {
switch ($version) {
case '4':
$filterFlag = FILTER_FLAG_IPV4;
break;
case '6':
$filterFlag = FILTER_FLAG_IPV6;
break;
default:
$filterFlag = '';
break;
}
return filter_var($ip, FILTER_VALIDATE_IP, $filterFlag);
}
public static function isNumber($number) {
return preg_match('/^-?[1-9]\d*$/', trim($number));
}
public static function hasNumber($number) {
return preg_match('/-?[1-9]\d*/', trim($number));
}
public static function isPrice($price, $precise = 2) {
if ($precise) {
return preg_match('/^\d+(\.\d{' . $precise . '})?$/', trim($price));
} else {
return preg_match('/^\d+(\.\d)?$/', trim($price));
}
}
public static function isEnglish($string) {
return preg_match('/^[A-Za-z]+$/', trim($string));
}
public static function hasEnglish($string) {
return preg_match('/[A-Za-z]/', trim($string));
}
public static function isChinese($string) {
return preg_match('/^[\x{4e00}-\x{9fa5}]+$/u', trim($string));
}
public static function hasChinese($string) {
return preg_match('/[\x{4e00}-\x{9fa5}]/u', trim($string));
}
public static function isDate($date, $formats = ['Y-m-d', 'Y/m/d']) {
$unixTime = strtotime($date);
if (!$unixTime) {
return false;
}
foreach ($formats as $format) {
if (date($format, $unixTime) == $date) {
return true;
}
}
return false;
}
public static function isJson($string) {
json_decode($string);
return (json_last_error() == JSON_ERROR_NONE);
}
}