121 if ($flags & self::CAPITALIZE_PERCENT_ENCODING) {
122 $uri = self::capitalizePercentEncoding($uri);
125 if ($flags & self::DECODE_UNRESERVED_CHARACTERS) {
126 $uri = self::decodeUnreservedCharacters($uri);
129 if ($flags & self::CONVERT_EMPTY_PATH && $uri->
getPath() ===
'' &&
135 if ($flags & self::REMOVE_DEFAULT_HOST && $uri->
getScheme() ===
'file' && $uri->
getHost() ===
'localhost') {
147 if ($flags & self::REMOVE_DUPLICATE_SLASHES) {
151 if ($flags & self::SORT_QUERY_PARAMETERS && $uri->
getQuery() !==
'') {
152 $queryKeyValues = explode(
'&', $uri->
getQuery());
153 sort($queryKeyValues);
154 $uri = $uri->
withQuery(implode(
'&', $queryKeyValues));
177 return (
string)
self::normalize($uri1, $normalizations) === (string) self::normalize($uri2, $normalizations);
180 private static function capitalizePercentEncoding(
UriInterface $uri)
182 $regex =
'/(?:%[A-Fa-f0-9]{2})++/';
184 $callback =
function (array $match) {
185 return strtoupper($match[0]);
190 preg_replace_callback($regex, $callback, $uri->
getPath())
192 preg_replace_callback($regex, $callback, $uri->
getQuery())
196 private static function decodeUnreservedCharacters(UriInterface $uri)
198 $regex =
'/%(?:2D|2E|5F|7E|3[0-9]|[46][1-9A-F]|[57][0-9A])/i';
200 $callback =
function (array $match) {
201 return rawurldecode($match[0]);
206 preg_replace_callback($regex, $callback, $uri->getPath())
208 preg_replace_callback($regex, $callback, $uri->getQuery())
212 private function __construct()