URI parsing polyfill for PHP8.1+
November 21, 2025 ยท View on GitHub
$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"
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
โ ๏ธ this is a sub-split, for development, pull requests and issues, visit: https://github.com/thephpleague/uri-src
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
Tip
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
The RFC introduces:
- the
Uri\Rfc3986\Uriclass, an RFC 3986 compliant URI parser - the
Uri\WhatWg\Urlclass, an WHATWG compliant URL parser
Full documentation can be found on the Add RFC 3986 and WHATWG compliant URI parsing support RFC.
Contributing
Contributions are welcome and will be fully credited. Please see CONTRIBUTING and CONDUCT for details.
Security
If you discover any security related issues, please email nyamsprod@gmail.com instead of using the issue tracker.
Changelog
Please see CHANGELOG for more information on what has changed recently.
Credits
License
The MIT License (MIT). Please see LICENSE for more information.