Files
wp-multisite-waas/dependencies/league/uri-parser/src/functions.php
2024-11-30 18:24:12 -07:00

108 lines
3.1 KiB
PHP

<?php
/**
* League.Uri (http://uri.thephpleague.com/parser).
*
* @author Ignace Nyamagana Butera <nyamsprod@gmail.com>
* @license https://github.com/thephpleague/uri-parser/blob/master/LICENSE (MIT License)
* @version 1.4.1
* @link https://uri.thephpleague.com/parser/
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
declare (strict_types=1);
namespace WP_Ultimo\Dependencies\League\Uri;
/**
* Returns whether the URI host component is valid according to RFC3986.
*
* @see https://tools.ietf.org/html/rfc3986#section-3.2.2
* @see Parser::isHost()
*/
function is_host(string $host) : bool
{
static $parser;
$parser = $parser ?? new Parser();
return $parser->isHost($host);
}
/**
* Returns whether the URI port component is valid according to RFC3986.
*
* @see https://tools.ietf.org/html/rfc3986#section-3.2.3
* @see Parser::isPort()
*/
function is_port($port) : bool
{
static $parser;
$parser = $parser ?? new Parser();
return $parser->isPort($port);
}
/**
* Returns whether the URI scheme component is valid according to RFC3986.
*
* @see https://tools.ietf.org/html/rfc3986#section-3.1
* @see Parser::isScheme()
*/
function is_scheme(string $scheme) : bool
{
static $parser;
$parser = $parser ?? new Parser();
return $parser->isScheme($scheme);
}
/**
* Parse an URI string into its components.
*
* This method parses a URL and returns an associative array containing any
* of the various components of the URL that are present.
*
* @see https://tools.ietf.org/html/rfc3986
* @see https://tools.ietf.org/html/rfc3986#section-2
* @see Parser::parse()
*
* @throws Exception if the URI contains invalid characters
*/
function parse(string $uri) : array
{
static $parser;
$parser = $parser ?? new Parser();
return $parser->parse($uri);
}
/**
* Generate an URI string representation from its parsed representation
* returned by League\Uri\Parser::parse() or PHP's parse_url.
*
* If you supply your own array, you are responsible for providing
* valid components without their URI delimiters.
*
* For security reasons the password (pass) component has been deprecated
* as per RFC3986 and is never returned in the URI string
*
* @see https://tools.ietf.org/html/rfc3986#section-5.3
* @see https://tools.ietf.org/html/rfc3986#section-7.5
*/
function build(array $components) : string
{
$uri = $components['path'] ?? '';
if (isset($components['query'])) {
$uri .= '?' . $components['query'];
}
if (isset($components['fragment'])) {
$uri .= '#' . $components['fragment'];
}
if (isset($components['host'])) {
$authority = $components['host'];
if (isset($components['port'])) {
$authority .= ':' . $components['port'];
}
if (isset($components['user'])) {
$authority = $components['user'] . '@' . $authority;
}
$uri = '//' . $authority . $uri;
}
if (isset($components['scheme'])) {
return $components['scheme'] . ':' . $uri;
}
return $uri;
}