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:
- PHP >= 8.1 but the latest stable version of PHP is recommended
- league/uri-interfaces
- rowbot/url
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"