diff --git a/cake/libs/validation.php b/cake/libs/validation.php index c1c17e9c99e..94c67cc04c2 100644 --- a/cake/libs/validation.php +++ b/cake/libs/validation.php @@ -666,14 +666,11 @@ public static function ssn($check, $regex = null, $country = null) { * @return boolean Success */ public static function url($check, $strict = false) { - self::__populateIp(); - $validChars = '([' . preg_quote('!"$&\'()*+,-.@_:;=~') . '\/0-9a-z]|(%[0-9a-f]{2}))'; - $regex = '/^(?:(?:https?|ftps?|file|news|gopher):\/\/)' . (!empty($strict) ? '' : '?') . - '(?:' . self::$__pattern['IPv4'] . '|' . self::$__pattern['hostname'] . ')(?::[1-9][0-9]{0,3})?' . - '(?:\/?|\/' . $validChars . '*)?' . - '(?:\?' . $validChars . '*)?' . - '(?:#' . $validChars . '*)?$/i'; - return self::_check($check, $regex); + $flags = array(FILTER_FLAG_HOST_REQUIRED); + if ($strict === true) { + $flags[] = FILTER_FLAG_SCHEME_REQUIRED; + } + return (boolean)filter_var($check, FILTER_VALIDATE_URL, $flags); } /**