PackageTrack
Sign in Get early access

league/uri-interfaces

Common tools for parsing and resolving RFC3987/RFC3986 URI

7.8.1 262M downloads/mo #91 most downloaded on composer thephpleague/uri-interfaces

What this package is like to depend on

Last release 5 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

4 releases in the last 12 months

see the full history below

Release timeline

24 releases · Oct 2016 to Mar 2026
2017 2018 2019 2020 2021 2022 2023 2024 2025 2026
Release Pre-release

Releases

latest 25
  1. 7.8.1 08 Mar 2026
    Release notes

    Added

    • None

    Fixed

    • Host::isIp is fixed to be more strict.
    • UriString::resolve regression from previous minor version fixed see issue #184

    Deprecated

    • None

    Removed

    • None
    Open source →
    Release notes

    Added

    • None

    Fixed

    • Host::isIp is fixed to be more strict.
    • UriString::resolve regression from previous minor version fixed see issue #184

    Deprecated

    • None

    Removed

    • None
    Open source →
    Release notes

    version 7.8.1 Latest

    Latest

    Compare

    Choose a tag to compare

    Open source →
  2. 7.8.0 15 Jan 2026
    Release notes

    Added

    • 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 coercion
    • Added support for BackedEnum
    • FragmentDirective::toFragmentValue
    • DomainHostInteraface::isSubdomainOf
    • DomainHostInteraface::hasSubdomain
    • DomainHostInteraface::isSiblingOf
    • DomainHostInteraface::parentHost
    • DomainHostInteraface::commonAncestorWith
    • Added the Transformable interface

    Fixed

    • Fix issue #177 improved userInfo encoding.
    • Fix UriString::resolve method.
    • Fix Type coercion when using the QueryString

    Deprecated

    • None

    Removed

    • None
    Open source →
    Release notes

    Added

    • 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 coercion
    • Added support for BackedEnum
    • FragmentDirective::toFragmentValue
    • DomainHostInteraface::isSubdomainOf
    • DomainHostInteraface::hasSubdomain
    • DomainHostInteraface::isSiblingOf
    • DomainHostInteraface::parentHost
    • DomainHostInteraface::commonAncestorWith
    • Added the Transformable interface

    Fixed

    • Fix issue #177 improved userInfo encoding.
    • Fix UriString::resolve method.
    • Fix Type coercion when using the QueryString

    Deprecated

    • None

    Removed

    • None
    Open source →
    Release notes

    version 7.8.0

    Compare

    Choose a tag to compare

    Open source →
  3. 7.7.0 07 Dec 2025
    Release notes

    Added

    • HostRecord class to normalize parsing and caching Host resolution
    • HostType Host type enumeration list as defined by RFC3986
    • HostFormat Host format enumaration list as defined by RFC3986/RFC3987

    Fixed

    • UriString::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.

    Deprecated

    • UriString::isValidHost use HostRecord::isValid method instead

    Removed

    • None
    Open source →
    Release notes

    Added

    • HostRecord class to normalize parsing and caching Host resolution
    • HostType Host type enumeration list as defined by RFC3986
    • HostFormat Host format enumaration list as defined by RFC3986/RFC3987

    Fixed

    • UriString::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.

    Deprecated

    • UriString::isValidHost use HostRecord::isValid method instead

    Removed

    • None
    Open source →
    Release notes

    version 7.7.0

    Compare

    Choose a tag to compare

    Open source →
  4. 7.6.0 18 Nov 2025
    Release notes

    Added

    • UriComponentInterface::equals
    • Contidionable interface
    • UriInterface::resolve
    • UriInterface::relativize
    • UriInterface::equals
    • UriInterface::toNormalizedString
    • UriInterface::withUsername
    • UriInterface::withPassword
    • IPv6\Converter::isIpv6
    • IPv6\Converter::normalize
    • UriString::resolve
    • UriString::removeDotSegments
    • UriString::normalize
    • UriString::normalizeAuthority
    • UriString::containsRfc3986Chars
    • UriString::containsRfc3987Chars
    • UriString::isValidScheme
    • UriString::isValidHost
    • FeatureDetection::supportsDom
    • Encoder::decodeNecessary
    • Encoder::decodePath
    • Encoder::decodeQuery
    • Encoder::decodeFragment
    • Encoder::isUserEncoded
    • Encoder::isPasswordEncoded
    • Encoder::isUserInfoEncoded
    • Encoder::isPathEncoded
    • Encoder::isQueryEncoded
    • Encoder::isFragmentEncoded
    • Encoder::normalizeUser
    • Encoder::normalizePassword
    • Encoder::normalizeUserInfo
    • Encoder::normalizePath
    • Encoder::normalizeQuery
    • Encoder::normalizeFragment
    • Encoder::normalizeHost

    Fixed

    • UriString::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.

    Deprecated

    • Encoder::decodePartial replaced by Encoder::decodeNecessary

    Removed

    • Dependency to psr/http-factory package which is never required in the package.
    Open source →
    Release notes

    Added

    • UriComponentInterface::equals
    • Contidionable interface
    • UriInterface::resolve
    • UriInterface::relativize
    • UriInterface::equals
    • UriInterface::toNormalizedString
    • UriInterface::withUsername
    • UriInterface::withPassword
    • IPv6\Converter::isIpv6
    • IPv6\Converter::normalize
    • UriString::resolve
    • UriString::removeDotSegments
    • UriString::normalize
    • UriString::normalizeAuthority
    • UriString::containsRfc3986Chars
    • UriString::containsRfc3987Chars
    • UriString::isValidScheme
    • UriString::isValidHost
    • FeatureDetection::supportsDom
    • Encoder::decodeNecessary
    • Encoder::decodePath
    • Encoder::decodeQuery
    • Encoder::decodeFragment
    • Encoder::isUserEncoded
    • Encoder::isPasswordEncoded
    • Encoder::isUserInfoEncoded
    • Encoder::isPathEncoded
    • Encoder::isQueryEncoded
    • Encoder::isFragmentEncoded
    • Encoder::normalizeUser
    • Encoder::normalizePassword
    • Encoder::normalizeUserInfo
    • Encoder::normalizePath
    • Encoder::normalizeQuery
    • Encoder::normalizeFragment
    • Encoder::normalizeHost

    Fixed

    • UriString::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.

    Deprecated

    • Encoder::decodePartial replaced by Encoder::decodeNecessary

    Removed

    • Dependency to psr/http-factory package which is never required in the package.
    Open source →
    Release notes

    version 7.6.0

    Compare

    Choose a tag to compare

    Open source →
  5. 7.5.0 08 Dec 2024
    Release notes

    Added

    • 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.
    • Using PHP8.4 Deprecated attribute to signal deprecated public API methods and constants.

    Fixed

    • Adding Host resolution caching to speed up URI parsing in UriString
    • Uri\UriString::parseAuthority accepts Stringable object as valid input
    • Uri\IPv4\Converter::toDecimal also handles 6to4 and IPv4 mapped address algorithm.
    • Uri\QueryString::extract and QueryString::convert stop parsing too early issue #146

    Deprecated

    • UriInterface::getComponents use UriInterface::toComponents

    Removed

    • None
    Open source →
    Release notes

    Added

    • 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.
    • Using PHP8.4 Deprecated attribute to signal deprecated public API methods and constants.
    • HostInterface::encoded method to RFC3986 URL encode the host

    Fixed

    • Adding Host resolution caching to speed up URI parsing in UriString
    • Uri\UriString::parseAuthority accepts Stringable object as valid input
    • Uri\IPv4\Converter::toDecimal also handles 6to4 and IPv4 mapped address algorithm.
    • Uri\QueryString::extract and QueryString::convert stop parsing too early issue #146

    Deprecated

    • UriInterface::getComponents use UriInterface::toComponents

    Removed

    • None
    Open source →
    Release notes

    version 7.5.0

    Compare

    Choose a tag to compare

    Open source →
  6. 7.4.1 23 Mar 2024
    Release notes

    Added

    • None

    Fixed

    • Fix package to avoid PHP8.4 deprecation warnings

    Deprecated

    • None

    Removed

    • None
    Open source →
    Release notes

    7.4.1

    Compare

    Choose a tag to compare

    Open source →
  7. 7.4.0 24 Nov 2023

    Nothing published for this version

  8. 7.3.0 09 Sep 2023
    Release notes

    Added

    • League\Uri\Contracts\QueryInterface::withoutPairByKey
    • League\Uri\Contracts\QueryInterface::withoutPairByValue
    • League\Uri\Contracts\QueryInterface::withoutPairByKeyValue
    • League\Uri\Contracts\QueryInterface::toFormData
    • League\Uri\Contracts\QueryInterface::withoutPairByKeyValue
    • League\Uri\KeyValuePair\Converter::fromFormData
    • League\Uri\KeyValuePair\Converter::separator method
    • League\Uri\KeyValuePair\Converter::encondingMap method

    Fixed

    • League\Uri\KeyValuePair\Converter fix encoding when the value is a float or the boolean false
    • Exception message typo fix #121 by GrahamCampbell

    Deprecated

    • Contracts\QueryInterface\QueryInterface::withoutPair use Contracts\QueryInterface\QueryInterface::withoutPairByKey instead.

    Removed

    • None
    Open source →
    Release notes

    Added

    • League\Uri\Contracts\QueryInterface::withoutPairByKey
    • League\Uri\Contracts\QueryInterface::withoutPairByValue
    • League\Uri\Contracts\QueryInterface::withoutPairByKeyValue
    • League\Uri\Contracts\QueryInterface::toFormData
    • League\Uri\Contracts\QueryInterface::withoutPairByKeyValue
    • League\Uri\KeyValuePair\Converter::fromFormData
    • League\Uri\KeyValuePair\Converter::separator method
    • League\Uri\KeyValuePair\Converter::encondingMap method

    Fixed

    • League\Uri\KeyValuePair\Converter fix encoding when the value is a float or the boolean false
    • Exception message typo fix #121 by GrahamCampbell

    Deprecated

    • Contracts\QueryInterface\QueryInterface::withoutPair use Contracts\QueryInterface\QueryInterface::withoutPairByKey instead.

    Removed

    • None
    Open source →
    Release notes

    version 7.3.0

    Compare

    Choose a tag to compare

    Open source →
  9. 7.2.0 30 Aug 2023
    Release notes

    Added

    • League\Uri\Idna\Converter::isIdn
    • League\Uri\Ipv4\Converter::isIpv4

    Fixed

    • Add support for Stringable host object in League\Uri\Idna\Converter feature.
    • Add support for Stringable host object in League\Uri\Exceptions\ConversionFailed feature.

    Deprecated

    • None

    Removed

    • None
    Open source →
    Release notes

    Added

    • League\Uri\Idna\Converter::isIdn
    • League\Uri\Ipv4\Converter::isIpv4

    Fixed

    • Add support for Stringable host object in League\Uri\Idna\Converter feature.
    • Add support for Stringable host object in League\Uri\Exceptions\ConversionFailed feature.

    Deprecated

    • None

    Removed

    • None
    Open source →
    Release notes

    version 7.2.0

    Compare

    Choose a tag to compare

    Open source →
  10. 7.1.0 21 Aug 2023
    Release notes

    Added

    • League\Uri\Encoder to normalize encoding URI and URI components.
    • League\Uri\KeyValuePair\Converter to parse and build key/value pair string.

    Fixed

    • Rewrite QueryString classes and fix query encoding for basic RFC3986. #109

    Deprecated

    • None

    Removed

    • None

    Full Changelog: 7.0.0...7.1.0

    Open source →
    Release notes

    Added

    • League\Uri\Encoder to normalize encoding URI and URI components.
    • League\Uri\KeyValuePair\Converter to parse and build key/value pair string.

    Fixed

    • Rewrite QueryString classes and fix query encoding for basic RFC3986. #109

    Deprecated

    • None

    Removed

    • None
    Open source →
    Release notes

    version 7.1.0

    Compare

    Choose a tag to compare

    Open source →
  11. 7.0.0 10 Aug 2023
    Release notes

    Added

    • New method to UriComponentInterface::value
    • New method to UriComponentInterface::toString
    • New method to UserInfoInterface::withUser
    • New method to UserInfoInterface::withPass
    • New method to UriInterface::toString
    • New method to UriInterface::getComponents
    • League\Uri\IPv4 tools
    • League\Uri\Idna tools
    • League\Uri\UriString parser
    • League\Uri\QueryString parser

    Fixed

    • None

    Deprecated

    • None

    Removed

    • Support for PHP7
    • Support for __set_state
    • UriComponentInterface::getContent is removed in favor of UriComponentInterface::value
    • UriComponentInterface::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 instead
    • League\Uri\Idna\IdnaInfo use League\Uri\Idna\Result instead
    • League\Uri\Exception\IdnSupportMissing use League\Uri\Exception\MissingFeature instead
    Open source →
    Release notes

    version 7.0.0

    Compare

    Choose a tag to compare

    Open source →
  12. 7.0.0-beta.2 17 Jun 2023 pre-release

    Nothing published for this version

  13. 7.0.0-beta.1 no date pre-release

    Nothing published for this version

  14. 2.3.0 28 Jun 2021
    Release notes

    Added

    • IDNA processing classes

    Fixed

    • None

    Deprecated

    • None

    Removed

    • Support for PHP7.1
    Open source →
  15. 2.2.0 31 Oct 2020
    Release notes

    Added

    Fixed

    • None

    Deprecated

    • None

    Removed

    • None
    Open source →
  16. 2.1.0 08 Feb 2020
    Release notes

    Added

    • League\Uri\Exceptions\FileinfoSupportMissing based on the work of Nicolas Grekas

    Fixed

    • Improved docblock.

    Deprecated

    • None

    Removed

    • None
    Open source →
  17. 2.0.1 17 Dec 2019
    Release notes

    Added

    • Nothing

    Fixed

    • Remove useless docblock from League\Uri\Contract\IpHostInterface::withoutZoneIdentifier

    Deprecated

    • None

    Removed

    • None
    Open source →
  18. 2.0.0 17 Oct 2019
    Release notes

    Added

    • League\Uri\Contract\AuthorityInterface
    • League\Uri\Contract\DataPathInterface
    • League\Uri\Contract\DomainHostInterface
    • League\Uri\Contract\FragmentInterface
    • League\Uri\Contract\HostInterface
    • League\Uri\Contract\IpHostInterface
    • League\Uri\Contract\PathInterface
    • League\Uri\Contract\PortInterface
    • League\Uri\Contract\QueryInterface
    • League\Uri\Contract\SegmentedPathInterface
    • League\Uri\Contract\UriComponentInterface
    • League\Uri\Contract\UriException
    • League\Uri\Contract\UriInterface
    • League\Uri\Contract\UserInfoInterface
    • League\Uri\Exception\EncodingNotFound
    • League\Uri\Exception\IdnSupportMissing
    • League\Uri\Exception\SyntaxError

    Fixed

    • None

    Deprecated

    • None

    Removed

    • League\Uri\Interfaces namespace
    • League\Uri\UriInterface
    • support for PHP7.0
    Open source →
  19. 1.1.1 05 Nov 2018
    Release notes

    Added

    • None

    Fixed

    • Make League\Uri\Interfaces\Uri implements League\Uri\UriInterface

    Deprecated

    • None

    Removed

    • None
    Open source →
  20. 1.1.0 22 May 2018
    Release notes

    Added

    • League\Uri\UriInterface.

    Fixed

    • None

    Deprecated

    • League\Uri\Interfaces\Uri use League\Uri\UriInterface instead.

    Removed

    • None
    Open source →
  21. 1.0.0 04 Jan 2017
    Release notes

    Added

    • None

    Fixed

    • None

    Deprecated

    • None

    Removed

    • League\Uri\Interfaces\Component. The interface is moved to the League URI Components package.
    Open source →
  22. 0.4.0 09 Dec 2016
    Release notes

    Added

    • League\Uri\Interfaces\Path replaces League\Uri\Interfaces\PathComponent
    • League\Uri\Interfaces\Path::isEmpty

    Fixed

    • None

    Deprecated

    • None

    Removed

    • League\Uri\Interfaces\CollectionComponent
    • League\Uri\Interfaces\PathComponent
    Open source →
  23. 0.3.0 01 Dec 2016
    Release notes

    Added

    • League\Uri\Interfaces\Component::NO_ENCODING to remove any specific encoding
    • League\Uri\Interfaces\Component::RFC3986_ENCODING to specify encoding according to RFC3986 rules
    • League\Uri\Interfaces\Component::RFC3987_ENCODING to specify encoding according to RFC3987 rules

    Fixed

    • Update Component::getContent optional parameter default.

    Deprecated

    • None

    Removed

    • League\Uri\Interfaces\Component::RFC3986
    • League\Uri\Interfaces\Component::RFC3987
    Open source →
  24. 0.2.0 29 Nov 2016
    Release notes

    Added

    • League\Uri\Interfaces\Component::RFC3986 to specify encoding according to RFC3986 rules
    • League\Uri\Interfaces\Component::RFC3987 to specify encoding according to RFC3987 rules

    Fixed

    • League\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 thrown

    Deprecated

    • None

    Removed

    • None
    Open source →
  25. 0.1.0 17 Oct 2016
    Release notes

    Added

    • League\Uri\Interfaces\Component::getContent
    • League\Uri\Interfaces\Component::withContent
    • League\Uri\Interfaces\Component::isDefined

    Fixed

    • Renamed League\Uri\Interfaces\Collection to League\Uri\Interfaces\CollectionComponent
    • Renamed League\Uri\Interfaces\Path to League\Uri\Interfaces\PathComponent

    Deprecated

    • None

    Removed

    • League\Uri\Interfaces\UriPart
    • League\Uri\Interfaces\HierarchicalComponent
    • League\Uri\Interfaces\Scheme
    • League\Uri\Interfaces\User
    • League\Uri\Interfaces\Pass
    • League\Uri\Interfaces\UserInfo
    • League\Uri\Interfaces\Host
    • League\Uri\Interfaces\Port
    • League\Uri\Interfaces\Path::withoutEmptySegments
    • League\Uri\Interfaces\Path::hasTrailingSlash
    • League\Uri\Interfaces\Path::withTrailingSlash
    • League\Uri\Interfaces\Path::withoutTrailingSlash
    • League\Uri\Interfaces\Path::getTypecode
    • League\Uri\Interfaces\Path::withTypecode
    • League\Uri\Interfaces\Path::FTP_TYPE_ASCII
    • League\Uri\Interfaces\Path::FTP_TYPE_BINARY
    • League\Uri\Interfaces\Path::FTP_TYPE_DIRECTORY
    • League\Uri\Interfaces\Path::FTP_TYPE_EMPTY
    • League\Uri\Interfaces\HierarchicalPath
    • League\Uri\Interfaces\DataPath
    • League\Uri\Interfaces\Query
    • League\Uri\Interfaces\Fragment
    Open source →

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive