8namespace Depage\HtmlForm\Validators;
22 public function validate($url, $parameters = []): bool
24 return (
bool) filter_var(self::normalizeUrl($url), FILTER_VALIDATE_URL);
39 $info = parse_url(trim($url));
41 $scheme = isset($info[
'scheme']) ? $info[
'scheme'] .
'://' :
'';
42 $host = $info[
'host'] ??
'';
44 $host = idn_to_ascii($host);
46 $port = isset($info[
'port']) ?
':' . $info[
'port'] :
'';
47 $user = isset($info[
'user']) ? rawurlencode($info[
'user']) :
'';
48 $pass = isset($info[
'pass']) ?
':' . rawurlencode($info[
'pass']) :
'';
49 $pass = ($user || $pass) ?
"$pass@" :
'';
50 $path = $info[
'path'] ??
'';
51 $query = isset($info[
'query']) ?
'?' . $info[
'query'] :
'';
52 $fragment = isset($info[
'fragment']) ?
'#' . $info[
'fragment'] :
'';
55 $encodedPath = implode(
'/', array_map(
'Depage\HtmlForm\Validators\Url::encodeUrlPath', explode(
'/', $path)));
57 return "$scheme$user$pass$host$port$encodedPath$query$fragment";
71 $info = parse_url(trim($url));
73 $scheme = isset($info[
'scheme']) ? $info[
'scheme'] .
'://' :
'';
74 $host = $info[
'host'] ??
'';
76 $host = idn_to_utf8($host);
78 $port = isset($info[
'port']) ?
':' . $info[
'port'] :
'';
79 $user = isset($info[
'user']) ? rawurldecode($info[
'user']) :
'';
80 $pass = isset($info[
'pass']) ?
':' . rawurldecode($info[
'pass']) :
'';
81 $pass = ($user || $pass) ?
"$pass@" :
'';
82 $path = $info[
'path'] ??
'';
83 $query = isset($info[
'query']) ?
'?' . rawurldecode($info[
'query']) :
'';
84 $fragment = isset($info[
'fragment']) ?
'#' . rawurldecode($info[
'fragment']) :
'';
86 return "$scheme$user$pass$host$port$path$query$fragment";
98 if (rawurlencode($path) != str_replace([
'%',
'+'], [
'%25',
'%2B'], $path)) {
99 $path = rawurlencode($path);
default validator for url input elements
static normalizeUrl($url)
normalizes url
static humanReadableUrl($url)
changes encoded url to a human readable format
validate($url, $parameters=[])
url validator
static encodeUrlPath($path)
Encodes the path of an URL.