public static function UrlValidator::isValid

Verifies the syntax of the given URL.

This function should only be used on actual URLs. It should not be used for Drupal menu paths, which can contain arbitrary characters. Valid values per RFC 3986.

Parameters

string $url: The URL to verify.

bool $absolute: Whether the URL is absolute (beginning with a scheme such as "http:").

Return value

bool TRUE if the URL is in a valid format.

4 calls to UrlValidator::isValid()
UrlValidatorTest::testInvalidAbsolute in drupal/core/tests/Drupal/Tests/Core/Common/UrlValidatorTest.php
Tests invalid absolute URLs.
UrlValidatorTest::testInvalidRelative in drupal/core/tests/Drupal/Tests/Core/Common/UrlValidatorTest.php
Tests invalid relative URLs.
UrlValidatorTest::testValidAbsolute in drupal/core/tests/Drupal/Tests/Core/Common/UrlValidatorTest.php
Tests valid absolute URLs.
valid_url in drupal/core/includes/common.inc
Verifies the syntax of the given URL.

File

drupal/core/lib/Drupal/Component/Utility/UrlValidator.php, line 112
Contains \Drupal\Component\Utility\UrlValidator.

Class

UrlValidator
Helper class to support filtering bad protocols from an url.

Namespace

Drupal\Component\Utility

Code

public static function isValid($url, $absolute = FALSE) {
  if ($absolute) {
    return (bool) preg_match("\n        /^                                                      # Start at the beginning of the text\n        (?:ftp|https?|feed):\\/\\/                                # Look for ftp, http, https or feed schemes\n        (?:                                                     # Userinfo (optional) which is typically\n          (?:(?:[\\w\\.\\-\\+!\$&'\\(\\)*\\+,;=]|%[0-9a-f]{2})+:)*      # a username or a username and password\n          (?:[\\w\\.\\-\\+%!\$&'\\(\\)*\\+,;=]|%[0-9a-f]{2})+@          # combination\n        )?\n        (?:\n          (?:[a-z0-9\\-\\.]|%[0-9a-f]{2})+                        # A domain name or a IPv4 address\n          |(?:\\[(?:[0-9a-f]{0,4}:)*(?:[0-9a-f]{0,4})\\])         # or a well formed IPv6 address\n        )\n        (?::[0-9]+)?                                            # Server port number (optional)\n        (?:[\\/|\\?]\n          (?:[\\w#!:\\.\\?\\+=&@\$'~*,;\\/\\(\\)\\[\\]\\-]|%[0-9a-f]{2})   # The path and query (optional)\n        *)?\n      \$/xi", $url);
  }
  else {
    return (bool) preg_match("/^(?:[\\w#!:\\.\\?\\+=&@\$'~*,;\\/\\(\\)\\[\\]\\-]|%[0-9a-f]{2})+\$/i", $url);
  }
}