W3cubDocs

/Drupal 8

public static function UrlHelper::externalIsLocal

public static UrlHelper::externalIsLocal($url, $base_url)

Determines if an external URL points to this installation.

Parameters

string $url: A string containing an external URL, such as "http://example.com/foo".

string $base_url: The base URL string to check against, such as "http://example.com/"

Return value

bool TRUE if the URL has the same domain and base path.

Throws

\InvalidArgumentException Exception thrown when a either $url or $bath_url are not fully qualified.

File

core/lib/Drupal/Component/Utility/UrlHelper.php, line 245

Class

UrlHelper
Helper class URL based methods.

Namespace

Drupal\Component\Utility

Code

public static function externalIsLocal($url, $base_url) {
  $url_parts = parse_url($url);
  $base_parts = parse_url($base_url);

  if (empty($base_parts['host']) || empty($url_parts['host'])) {
    throw new \InvalidArgumentException('A path was passed when a fully qualified domain was expected.');
  }

  if (!isset($url_parts['path']) || !isset($base_parts['path'])) {
    return (!isset($base_parts['path']) || $base_parts['path'] == '/')
      && ($url_parts['host'] == $base_parts['host']);
  }
  else {
    // When comparing base paths, we need a trailing slash to make sure a
    // partial URL match isn't occurring. Since base_path() always returns
    // with a trailing slash, we don't need to add the trailing slash here.
    return ($url_parts['host'] == $base_parts['host'] && stripos($url_parts['path'], $base_parts['path']) === 0);
  }
}

© 2001–2016 by the original authors
Licensed under the GNU General Public License, version 2 and later.
Drupal is a registered trademark of Dries Buytaert.
https://api.drupal.org/api/drupal/core!lib!Drupal!Component!Utility!UrlHelper.php/function/UrlHelper::externalIsLocal/8.1.x