NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
Packagist · #89 most downloaded on Packagist
Common tools for parsing and resolving RFC3987/RFC3986 URI
Last release 7 months ago
08 Mar 2026
Release timing varies
gaps range from 8 days to 12 months
Nearly every release is documented
notes for 22 of 23 stable releases
Nothing withdrawn
no release was ever pulled
10 years old
25 releases · first in 2016
Host::isIp is fixed to be more strict.
Host::isIp is fixed to be more strict.UriString::resolve regression from previous minor version fixed see issue #184Host::isIp is fixed to be more strict.UriString::resolve regression from previous minor version fixed see issue #184IPv6\Converter::normalize to handle IPv6 normalization #22618One column per quarter.
QueryString::compose and QueryString::composeFromValue a userland improved http_build_query method.
QueryString::compose and QueryString::composeFromValue a userland improved http_build_query method.QueryExtractMode and QueryComposeMode Enum to improve query parsing and building.StringCoercionMode to normalize type coercionBackedEnumFragmentDirective::toFragmentValueDomainHostInteraface::isSubdomainOfDomainHostInteraface::hasSubdomainDomainHostInteraface::isSiblingOfDomainHostInteraface::parentHostDomainHostInteraface::commonAncestorWithTransformable interfaceUriString::resolve method.HostRecord class to normalize parsing and caching Host resolution
HostRecord class to normalize parsing and caching Host resolutionHostType Host type enumeration list as defined by RFC3986HostFormat Host format enumaration list as defined by RFC3986/RFC3987UriString::buildAuthority should fail if an optional component is present when the host is missing.UriString::build should fail if an optional component is present when the host is missing.UriString::isValidHost use HostRecord::isValid method insteadUriInterface::toNormalizedString
UriComponentInterface::equalsContidionable interfaceUriInterface::resolveUriInterface::relativizeUriInterface::equalsUriInterface::toNormalizedStringUriInterface::withUsernameUriInterface::withPasswordIPv6\Converter::isIpv6IPv6\Converter::normalizeUriString::resolveUriString::removeDotSegmentsUriString::normalizeUriString::normalizeAuthorityUriString::containsRfc3986CharsUriString::containsRfc3987CharsUriString::isValidSchemeUriString::isValidHostFeatureDetection::supportsDomEncoder::decodeNecessaryEncoder::decodePathEncoder::decodeQueryEncoder::decodeFragmentEncoder::isUserEncodedEncoder::isPasswordEncodedEncoder::isUserInfoEncodedEncoder::isPathEncodedEncoder::isQueryEncodedEncoder::isFragmentEncodedEncoder::normalizeUserEncoder::normalizePasswordEncoder::normalizeUserInfoEncoder::normalizePathEncoder::normalizeQueryEncoder::normalizeFragmentEncoder::normalizeHostUriString::parse will fail if the URI contains whitespace.UriString::buildUri allows all arguments to be null including the path.UriString::buildAuthority allows the $user argument to be null and still generate a user info component.Encoder::decodePartial replaced by Encoder::decodeNecessarypsr/http-factory package which is never required in the package.Using PHP8.4 Deprecated attribute to signal deprecated public API methods and constants.
UriInterface::toComponents returns an associative array containing all URI components values.UriInterface::getUsername returns the encoded user component of the URI.UriInterface::getPassword returns the encoded scheme-specific information about how to gain authorization to access the resource.Uri\IPv6\Converter allows expanding and compressing IPv6.Uri\IPv4\Converter::toIPv6Using6to4 allows converting an IPv4 into an IPv6 host using the 6to4 notation.Uri\IPv4\Converter::toIPv6UsingMapping allows mapping an IPv4 address into an IPv6 one.Deprecated attribute to signal deprecated public API methods and constants.UriStringUri\UriString::parseAuthority accepts Stringable object as valid inputUri\IPv4\Converter::toDecimal also handles 6to4 and IPv4 mapped address algorithm.Uri\QueryString::extract and QueryString::convert stop parsing too early issue #146UriInterface::getComponents use UriInterface::toComponentsFix package to avoid PHP8.4 deprecation warnings
Nothing published for this version
League\Uri\Contracts\QueryInterface::withoutPairByKey
League\Uri\Contracts\QueryInterface::withoutPairByKeyLeague\Uri\Contracts\QueryInterface::withoutPairByValueLeague\Uri\Contracts\QueryInterface::withoutPairByKeyValueLeague\Uri\Contracts\QueryInterface::toFormDataLeague\Uri\Contracts\QueryInterface::withoutPairByKeyValueLeague\Uri\KeyValuePair\Converter::fromFormDataLeague\Uri\KeyValuePair\Converter::separator methodLeague\Uri\KeyValuePair\Converter::encondingMap methodLeague\Uri\KeyValuePair\Converter fix encoding when the value is a float or the boolean falseContracts\QueryInterface\QueryInterface::withoutPair use Contracts\QueryInterface\QueryInterface::withoutPairByKey instead.League\Uri\Idna\Converter::isIdn
League\Uri\Idna\Converter::isIdnLeague\Uri\Ipv4\Converter::isIpv4Stringable host object in League\Uri\Idna\Converter feature.Stringable host object in League\Uri\Exceptions\ConversionFailed feature.League\Uri\Encoder to normalize encoding URI and URI components.
League\Uri\Encoder to normalize encoding URI and URI components.League\Uri\KeyValuePair\Converter to parse and build key/value pair string.QueryString classes and fix query encoding for basic RFC3986. #109Full Changelog: 7.0.0...7.1.0
New method to UriComponentInterface::value
UriComponentInterface::valueUriComponentInterface::toStringUserInfoInterface::withUserUserInfoInterface::withPassUriInterface::toStringUriInterface::getComponentsLeague\Uri\IPv4 toolsLeague\Uri\Idna toolsLeague\Uri\UriString parserLeague\Uri\QueryString parser__set_stateUriComponentInterface::getContent is removed in favor of UriComponentInterface::valueUriComponentInterface::withContent is removed with no replacement use other means to change the value of the component.UserInfoInterface::withUserInfo is removed in favor of UserInfoInterface::withUser and UserInfoInterface::withPass.HostInfoInterface::labels is removed with no replacement use the IteratorAggregate::getIterator method instead.SegmentedPathInterface::segments is removed with no replacement use the IteratorAggregate::getIterator method instead.League\Uri\Idna\Idna use League\Uri\Idna\Converter insteadLeague\Uri\Idna\IdnaInfo use League\Uri\Idna\Result insteadLeague\Uri\Exception\IdnSupportMissing use League\Uri\Exception\MissingFeature insteadNothing published for this version
Nothing published for this version
### Added - IDNA processing classes ### Fixed - None ### Deprecated - None ### Removed - Support for PHP7.1
Support for PHP8 thanks to of someniatko
League\Uri\Exceptions\FileinfoSupportMissing based on the work of Nicolas Grekas
League\Uri\Exceptions\FileinfoSupportMissing based on the work of Nicolas GrekasRemove useless docblock from League\Uri\Contract\IpHostInterface::withoutZoneIdentifier
League\Uri\Contract\IpHostInterface::withoutZoneIdentifierLeague\Uri\Contract\AuthorityInterface
League\Uri\Contract\AuthorityInterfaceLeague\Uri\Contract\DataPathInterfaceLeague\Uri\Contract\DomainHostInterfaceLeague\Uri\Contract\FragmentInterfaceLeague\Uri\Contract\HostInterfaceLeague\Uri\Contract\IpHostInterfaceLeague\Uri\Contract\PathInterfaceLeague\Uri\Contract\PortInterfaceLeague\Uri\Contract\QueryInterfaceLeague\Uri\Contract\SegmentedPathInterfaceLeague\Uri\Contract\UriComponentInterfaceLeague\Uri\Contract\UriExceptionLeague\Uri\Contract\UriInterfaceLeague\Uri\Contract\UserInfoInterfaceLeague\Uri\Exception\EncodingNotFoundLeague\Uri\Exception\IdnSupportMissingLeague\Uri\Exception\SyntaxErrorLeague\Uri\Interfaces namespaceLeague\Uri\UriInterfacePHP7.0Make League\Uri\Interfaces\Uri implements League\Uri\UriInterface
League\Uri\Interfaces\Uri implements League\Uri\UriInterfaceLeague\Uri\Interfaces\Uri use League\Uri\UriInterface instead.
League\Uri\UriInterface.League\Uri\Interfaces\Uri use League\Uri\UriInterface instead.League\Uri\Interfaces\Component. The interface is moved to the League URI Components package.
League\Uri\Interfaces\Component. The interface is moved to the League URI Components package.League\Uri\Interfaces\Path replaces League\Uri\Interfaces\PathComponent
League\Uri\Interfaces\Path replaces League\Uri\Interfaces\PathComponentLeague\Uri\Interfaces\Path::isEmptyLeague\Uri\Interfaces\CollectionComponentLeague\Uri\Interfaces\PathComponentLeague\Uri\Interfaces\Component::NO_ENCODING to remove any specific encoding
League\Uri\Interfaces\Component::NO_ENCODING to remove any specific encodingLeague\Uri\Interfaces\Component::RFC3986_ENCODING to specify encoding according to RFC3986 rulesLeague\Uri\Interfaces\Component::RFC3987_ENCODING to specify encoding according to RFC3987 rulesComponent::getContent optional parameter default.League\Uri\Interfaces\Component::RFC3986League\Uri\Interfaces\Component::RFC3987League\Uri\Interfaces\Component::RFC3986 to specify encoding according to RFC3986 rules
League\Uri\Interfaces\Component::RFC3986 to specify encoding according to RFC3986 rulesLeague\Uri\Interfaces\Component::RFC3987 to specify encoding according to RFC3987 rulesLeague\Uri\Interfaces\Component::getContent now takes an optional $enc_type parameter
to specify the returned content encoding rules.League\Uri\Interfaces\Uri docblocks simplified around Exception thrownLeague\Uri\Interfaces\Component::getContent
League\Uri\Interfaces\Component::getContentLeague\Uri\Interfaces\Component::withContentLeague\Uri\Interfaces\Component::isDefinedLeague\Uri\Interfaces\Collection to League\Uri\Interfaces\CollectionComponentLeague\Uri\Interfaces\Path to League\Uri\Interfaces\PathComponentLeague\Uri\Interfaces\UriPartLeague\Uri\Interfaces\HierarchicalComponentLeague\Uri\Interfaces\SchemeLeague\Uri\Interfaces\UserLeague\Uri\Interfaces\PassLeague\Uri\Interfaces\UserInfoLeague\Uri\Interfaces\HostLeague\Uri\Interfaces\PortLeague\Uri\Interfaces\Path::withoutEmptySegmentsLeague\Uri\Interfaces\Path::hasTrailingSlashLeague\Uri\Interfaces\Path::withTrailingSlashLeague\Uri\Interfaces\Path::withoutTrailingSlashLeague\Uri\Interfaces\Path::getTypecodeLeague\Uri\Interfaces\Path::withTypecodeLeague\Uri\Interfaces\Path::FTP_TYPE_ASCIILeague\Uri\Interfaces\Path::FTP_TYPE_BINARYLeague\Uri\Interfaces\Path::FTP_TYPE_DIRECTORYLeague\Uri\Interfaces\Path::FTP_TYPE_EMPTYLeague\Uri\Interfaces\HierarchicalPathLeague\Uri\Interfaces\DataPathLeague\Uri\Interfaces\QueryLeague\Uri\Interfaces\FragmentYour coding agent can read these notes before it upgrades. Set up the MCP server →