URI polyfill for PHP8.1+

This package provides a polyfill for the new native PHP URI parsing features to be included in PHP8.5. The polyfill works for PHP versions greater or equal to PHP8.1

System Requirements

To use the package, you require:

If you are using PHP 8.1, you SHOULD install symfony/polyfill-php82 to use its SensitiveParameter polyfill

Install

Install the package using Composer.

composer require league/uri-polyfill:^7.6

Documentation

PHP 8.5 introduces the following classes:

  • the Uri\Rfc3986\Uri class, an RFC 3986 compliant URI parser
  • the Uri\WhatWg\Url class, an WHATWG compliant URL parser

These classes are accompanied by Exception and Enum classes that provide robust URI parsing and validation according to two widely used URI specifications.

This package backports these features to earlier PHP versions, starting from PHP 8.1.

Full documentation is available in the Add RFC 3986 and WHATWG compliant URI parsing support RFC, as well as on the PHP documentation website.

Once installed, you will be able to access the new PHP Native URI extension on older versions of PHP and do the following:

$uri = new Uri\Rfc3986\Uri("HTTPS://ex%61mpLE.com:443/foo/../bar/./baz?#fragment");
$uri->toRawString(); // returns "HTTPS://ex%61mpLE.com:443/foo/../bar/./baz?#fragment"
$uri->toString();    // returns "https://example.com:443/bar/baz?#fragment"

$url = new Uri\WhatWg\Url("HTTPS://🐘.com:443/foo/../bar/./baz?#fragment");
echo $url->toAsciiString();   // returns "https://xn--go8h.com/bar/baz?#fragment"
echo $url->toUnicodeString(); // returns "https://🐘.com/bar/baz?#fragment"