PackageTrack
Sign in Get early access

league/uri-components

URI components manipulation library

7.8.1 47M downloads/mo #300 most downloaded on Packagist thephpleague/uri-components

What this package is like to depend on

Last release 5 months ago

15 Mar 2026

Release timing varies

gaps range from 9 days to 12 months

Nearly every release is documented

notes for 46 of 47 stable releases

Nothing withdrawn

no release was ever pulled

10 years old

50 releases · first in 2016

4 releases in the last 12 months

see the full history below

Release timeline

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

Releases

latest 50
  1. 7.8.1 15 Mar 2026
    Release notes

    Added

    • None

    Fixed

    • Update requirement to use uri 7.8.1

    Deprecated

    • None

    Removed

    • None
    Open source →
    Release notes

    Added

    • None

    Fixed

    • Update requirement to use uri 7.8.1

    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 14 Jan 2026
    Release notes

    Added

    • Added support for BackedEnum
    • Query::hasList
    • Query::getList
    • Query::withList
    • Query::appendList
    • Query::withoutList
    • Query::withoutLists
    • Query::onlyLists
    • Query::countDistinctKeys
    • Query::isNotEmpty
    • Query::map
    • Query::filter
    • Query::indexOfValue
    • Query::valueAt
    • Query::keyAt
    • Query::pair
    • URLSearchParams::countDistinctKeys
    • URLSearchParams::tap
    • Domain::isSubdomainOf
    • Domain::hasSubdomain
    • Domain::isSiblingOf
    • Domain::parentHos
    • Domain::commonAncestorWith
    • Added transform method to Immutable classes

    Fixed

    • Query and Modifier methods can opt to switch to different query string extraction using the new $extractMode parameter.
    • Query and Modifier methods can opt to switch to different query string composition using the new $composeMode parameter.
    • Query and Modifier methods can opt to switch to different type coercion using the new $coercionMode parameter.

    Deprecated

    • URLSearchParams::uniqueKeyCount use URLSearchParams::countDistinctKeys instead

    Removed

    • None
    Open source →
    Release notes

    Added

    • Added support for BackedEnum
    • Query::hasList
    • Query::getList
    • Query::withList
    • Query::appendList
    • Query::withoutList
    • Query::withoutLists
    • Query::onlyLists
    • Query::countDistinctKeys
    • Query::isNotEmpty
    • Query::map
    • Query::filter
    • Query::indexOfValue
    • Query::valueAt
    • Query::keyAt
    • Query::pair
    • URLSearchParams::countDistinctKeys
    • URLSearchParams::tap
    • Domain::isSubdomainOf
    • Domain::hasSubdomain
    • Domain::isSiblingOf
    • Domain::parentHos
    • Domain::commonAncestorWith
    • Added transform method to Immutable classes

    Fixed

    • Query and Modifier methods can opt to switch to different query string extraction using the new $extractMode parameter.
    • Query and Modifier methods can opt to switch to different query string composition using the new $composeMode parameter.
    • Query and Modifier methods can opt to switch to different type coercion using the new $coercionMode parameter.

    Deprecated

    • URLSearchParams::uniqueKeyCount use URLSearchParams::countDistinctKeys instead

    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

    • Domain::first returns the first domain label
    • Domain::last returns the last domain label
    • Domain::contains tells wether the label is present in the domain
    • Domain::indexOf returns the index of the first occurrence of the label
    • Domain::lastIndexOf returns the index of the last occurrence of the label
    • Domain::isEmpty tells whether the domain is empty or not (contains at least on label)
    • HierarchicalPath::first returns the first segment
    • HierarchicalPath::last returns the last segment
    • HierarchicalPath::contains tells whether the segment is present in the path
    • HierarchicalPath::indexOf returns the index of the first occurrence of the segment
    • HierarchicalPath::lastIndexOf returns the index of the last occurrence of the segment
    • HierarchicalPath::isEmpty tells whether the path is empty or not (contains at least on segment)
    • Query::first returns the first value for a given query key pair
    • Query::last returns the last value for a given query key pair
    • Query::isEmpty tells whether the query is empty or not
    • URLSearchParams::first returns the first value for a given query key pair
    • URLSearchParams::last returns the last value for a given query key pair
    • URLSearchParams::hasValue an alias of using URLSearchParams::has with 2 parameters
    • URLSearchParams::deleteValue an alias of using URLSearchParams::delete with 2 parameters
    • Modifier::redactUserInfo redacts the user info component if present
    • Modifier::redactPathSegments redacts specific path segments if present
    • Modifier::redactPathNextSegments redacts specific path next segments if present
    • Modifier::redactPathSegmentsByOffset redacts specific path segments by offset if present
    • Modifier::redactQueryPairs redacts specific query pair if present
    • Modifier::prependQuery prepend a query string to the URI query component
    • Modifier::prependPath replace Modifier::prependSegment
    • Modifier::appendPath replace Modifier::appendSegment
    • Modifier::prependSegments
    • Modifier::appendSegments

    Fixed

    • Fix deprecation message for Modifier::uri() method 166 by meyerbaptiste
    • Fix missing SensitiveParameter usage on Modifier::withUserInfo method
    • Fix Host resolution using the new HostRecord class
    • Fix Modifier::withPath improve handling of path leading slash presence for PSR-7 implementing classes

    Deprecated

    • Modifier::prependSegment use Modifier::prependPath instead
    • Modifier::appendSegment use Modifier::appendPath instead

    Removed

    • None
    Open source →
    Release notes

    Added

    • Domain::first returns the first domain label
    • Domain::last returns the last domain label
    • Domain::contains tells wether the label is present in the domain
    • Domain::indexOf returns the index of the first occurrence of the label
    • Domain::lastIndexOf returns the index of the last occurrence of the label
    • Domain::isEmpty tells whether the domain is empty or not (contains at least on label)
    • HierarchicalPath::first returns the first segment
    • HierarchicalPath::last returns the last segment
    • HierarchicalPath::contains tells whether the segment is present in the path
    • HierarchicalPath::indexOf returns the index of the first occurrence of the segment
    • HierarchicalPath::lastIndexOf returns the index of the last occurrence of the segment
    • HierarchicalPath::isEmpty tells whether the path is empty or not (contains at least on segment)
    • Query::first returns the first value for a given query key pair
    • Query::last returns the last value for a given query key pair
    • Query::isEmpty tells whether the query is empty or not
    • URLSearchParams::first returns the first value for a given query key pair
    • URLSearchParams::last returns the last value for a given query key pair
    • URLSearchParams::hasValue an alias of using URLSearchParams::has with 2 parameters
    • URLSearchParams::deleteValue an alias of using URLSearchParams::delete with 2 parameters
    • Modifier::redactUserInfo redacts the user info component if present
    • Modifier::redactPathSegments redacts specific path segments if present
    • Modifier::redactPathNextSegments redacts specific path next segments if present
    • Modifier::redactPathSegmentsByOffset redacts specific path segments by offset if present
    • Modifier::redactQueryPairs redacts specific query pair if present
    • Modifier::prependQuery prepend a query string to the URI query component
    • Modifier::prependPath replace Modifier::prependSegment
    • Modifier::appendPath replace Modifier::appendSegment
    • Modifier::prependSegments
    • Modifier::appendSegments

    Fixed

    • Fix deprecation message for Modifier::uri() method 166 by meyerbaptiste
    • Fix missing SensitiveParameter usage on Modifier::withUserInfo method
    • Fix Host resolution using the new HostRecord class
    • Fix Modifier::withPath improve handling of path leading slash presence for PSR-7 implementing classes

    Deprecated

    • Modifier::prependSegment use Modifier::prependPath instead
    • Modifier::appendSegment use Modifier::appendPath 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 method
    • FragmentDirectives support
    • Component::when conditional method to ease component building logic.
    • URLSearchParams::when conditional method to ease component building logic.
    • Modifier::prependQueryParameters returns a modifier with prepended query parameters
    • Modifier::replaceQueryParameter returns a modifier with part of its query string replaced
    • Modifier::replaceQueryPair returns a modifier with part of its query string replaced
    • Modifier::when conditional method to ease component building logic.
    • Modifier::normalizeIp returns the host normalized for IPv6 and IPv4 addresses
    • Modifier::normalizeHost returns the host as normalized by the WHATWG algorithm
    • Modifier::with* method from the underlying Uri object are proxy to improve DX.
    • Modifier::wrap static method which wraps the underlying URI object used by the Modifier class.
    • Modifier::unwrap method which returns the underlying URI object used by the Modifier class.
    • Modifier::prefixQueryPairs and Modifier::prefixQueryParameters to prefix Query using the pair key or the parameter names
    • Modifier::toMarkdownAnchor returns the Markdown string representation of the anchor tag with the current instance as its href attribute.
    • Modifier::toHtmlAnchor returns the HTML string representation of the anchor tag with the current instance as its href attribute.
    • tryNew named constructor added to all classes to return a new instance on success or null on failure.
    • Query::decoded the string representation of the component decoded.
    • Query::normalized
    • Query::fromPairs and Query::fromVariable takes a optional $prefix parameter to update the query pair keys or parameter names
    • Query::indexOf and Query::replace
    • Query::mergeParameters
    • Query::replaceParameter
    • Query::replacePair
    • Query::prepend
    • URLSearchParams::decoded the string representation of the component decoded.
    • Path::nornalized
    • Fragment::normalized
    • HierarchicalPath::normalized
    • Datapath::normalized
    • Support for Uri\Rfc3986\Uri
    • Support for Uri\WhatWg\Url
    • Port::defaultSchemes
    • Port::defaultScheme
    • Scheme::isWhatWgSpecial
    • Scheme::defaultPort
    • Scheme::hasDefaultPort

    Fixed

    • Modifier host related method return host in IDN form or ASCII form depending on the URI input format
    • UserInfo now can be constructed and mutated even when the user component is not present. It was throwing an exception before.

    Deprecated

    • Modifier::getIdnUriString use Modifier::toDisplayString instead
    • Modifier::getUriString use Modifier::toString instead
    • Modifier::getUri use Modifier::uri instead
    • Modifier::from use Modifier::wrap instead

    Removed

    • None
    Open source →
    Release notes

    Added

    • UriComponentInterface::equals method
    • FragmentDirectives support
    • Component::when conditional method to ease component building logic.
    • URLSearchParams::when conditional method to ease component building logic.
    • Modifier::prependQueryParameters returns a modifier with prepended query parameters
    • Modifier::replaceQueryParameter returns a modifier with part of its query string replaced
    • Modifier::replaceQueryPair returns a modifier with part of its query string replaced
    • Modifier::when conditional method to ease component building logic.
    • Modifier::normalizeIp returns the host normalized for IPv6 and IPv4 addresses
    • Modifier::normalizeHost returns the host as normalized by the WHATWG algorithm
    • Modifier::with* method from the underlying Uri object are proxy to improve DX.
    • Modifier::wrap static method which wraps the underlying URI object used by the Modifier class.
    • Modifier::unwrap method which returns the underlying URI object used by the Modifier class.
    • Modifier::prefixQueryPairs and Modifier::prefixQueryParameters to prefix Query using the pair key or the parameter names
    • Modifier::toMarkdownAnchor returns the Markdown string representation of the anchor tag with the current instance as its href attribute.
    • Modifier::toHtmlAnchor returns the HTML string representation of the anchor tag with the current instance as its href attribute.
    • tryNew named constructor added to all classes to return a new instance on success or null on failure.
    • Query::decoded the string representation of the component decoded.
    • Query::normalized
    • Query::fromPairs and Query::fromVariable takes a optional $prefix parameter to update the query pair keys or parameter names
    • Query::indexOf and Query::replace
    • Query::mergeParameters
    • Query::replaceParameter
    • Query::replacePair
    • Query::prepend
    • URLSearchParams::decoded the string representation of the component decoded.
    • Path::nornalized
    • Fragment::normalized
    • HierarchicalPath::normalized
    • Datapath::normalized
    • Support for Uri\Rfc3986\Uri
    • Support for Uri\WhatWg\Url
    • Port::defaultSchemes
    • Port::defaultScheme
    • Scheme::isWhatWgSpecial
    • Scheme::defaultPort
    • Scheme::hasDefaultPort

    Fixed

    • Modifier host related method return host in IDN form or ASCII form depending on the URI input format
    • UserInfo now can be constructed and mutated even when the user component is not present. It was throwing an exception before.

    Deprecated

    • Modifier::getIdnUriString use Modifier::toDisplayString instead
    • Modifier::getUriString use Modifier::toString instead
    • Modifier::getUri use Modifier::uri instead
    • Modifier::from use Modifier::wrap instead

    Removed

    • None
    Open source →
    Release notes

    version 7.6.0

    Compare

    Choose a tag to compare

    Open source →
  5. 7.5.1 08 Dec 2024
    Release notes

    Full Changelog:

    Open source →
    Release notes

    version 7.5.1

    Compare

    Choose a tag to compare

    Open source →
  6. 7.5.0 08 Dec 2024
    Release notes

    Added

    • UrlSearchParams::uniqueKeyCount
    • Modifier::getIdnUriString
    • Modifier::hostToIpv6Compressed
    • Modifier::hostToIpv6Expanded
    • Scheme::isHttp
    • Scheme::isWebsocket
    • Scheme::isSsl
    • Scheme::isSpecial
    • Using PHP8.4 Deprecated attribute to signal deprecated public API methods and constants.

    Fixed

    • Remove Usage of PSR-7 UriInterface in UrlSearchParams class
    • Normalizes fromUri to return the same value for the component if the URI object has the same string representation.

    Deprecated

    • Usage of PSR-7 UriFactoryInterface is deprecated in Modifier class

    Removed

    • None
    Open source →
    Release notes

    Added

    • UrlSearchParams::uniqueKeyCount
    • Modifier::getIdnUriString
    • Modifier::hostToIpv6Compressed
    • Modifier::hostToIpv6Expanded
    • Scheme::isHttp
    • Scheme::isWebsocket
    • Scheme::isSsl
    • Scheme::isSpecial
    • Using PHP8.4 Deprecated attribute to signal deprecated public API methods and constants.
    • Host::encoded method to raw url encode the host

    Fixed

    • Remove Usage of PSR-7 UriInterface in UrlSearchParams class
    • Normalizes fromUri to return the same value for the component if the URI object has the same string representation.

    Deprecated

    • Usage of PSR-7 UriFactoryInterface is deprecated in Modifier class

    Removed

    • None
    Open source →
    Release notes

    version 7.5.0

    Compare

    Choose a tag to compare

    Open source →
  7. 7.4.1 23 Mar 2024
    Release notes

    Added

    • None

    Fixed

    • Fix package to avoid PHP8.4 deprecation warnings
    • Bug Fix removeEmptyPairs #133

    Deprecated

    • None

    Removed

    • None
    Open source →
    Release notes

    Added

    • None

    Fixed

    • Fix package to avoid PHP8.4 deprecation warnings
    • Bug Fix removeEmptyPairs #133

    Deprecated

    • None

    Removed

    • None
    Open source →
    Release notes

    version 7.4.1

    Compare

    Choose a tag to compare

    Open source →
  8. 7.4.0 01 Dec 2023
    Release notes

    Added

    • Query::fromVariable
    • UrlSearchParams::fromVariable

    Fixed

    • None

    Deprecated

    • Query::fromParameters use Query::fromVariable instead
    • UrlSearchParams::fromParameters use UrlSearchParams::fromVariable instead

    Removed

    • None
    Open source →
    Release notes

    Added

    • Query::fromVariable
    • UrlSearchParams::fromVariable

    Fixed

    • None

    Deprecated

    • Query::fromParameters use Query::fromVariable instead
    • UrlSearchParams::fromParameters use UrlSearchParams::fromVariable instead

    Removed

    • None
    Open source →
    Release notes

    version 7.4.0

    Compare

    Choose a tag to compare

    Open source →
  9. 7.3.0 09 Sep 2023
    Release notes

    Added

    • League\Uri\Modifier::removeQueryPairsByKey
    • League\Uri\Modifier::removeQueryPairsByValue
    • League\Uri\Modifier::removeQueryPairsByKeyValue
    • League\Uri\Components\Query::hasPair
    • League\Uri\Components\Query::withoutPairByKey
    • League\Uri\Components\Query::withoutPairByValue
    • League\Uri\Components\Query::withoutPairByKeyValue
    • League\Uri\Components\Query::fromFormData
    • League\Uri\Components\Query::toFormData
    • League\Uri\Components\URLSearchParams

    Fixed

    • League\Uri\Components\Query::sort to improve WHATWG compliance.
    • League\Uri\QueryString::buildFromPairs should throw SyntaxError instead of TypeError
    • League\Uri\Components\Query uses internally League\Uri\KeyValuePair\Converter
    • League\Uri\Components\Query::toRFC3986 is no longer deprecated
    • League\Uri\Components\Query::jsonSerualize uses toFormData instead of toRFC1738
    • League\Uri\Components\Query fix float handling.
    • Exception message typo fix #121 by GrahamCampbell

    Deprecated

    • League\Uri\Modifier::removeQueryPairs use League\Uri\Modifier::removeQueryPairsByKey instead.
    • League\Uri\Components\Query::withoutPair use League\Uri\Components\Query::withoutPairByKey instead.

    Removed

    • None
    Open source →
    Release notes

    Added

    • League\Uri\Modifier::removeQueryPairsByKey
    • League\Uri\Modifier::removeQueryPairsByValue
    • League\Uri\Modifier::removeQueryPairsByKeyValue
    • League\Uri\Components\Query::hasPair
    • League\Uri\Components\Query::withoutPairByKey
    • League\Uri\Components\Query::withoutPairByValue
    • League\Uri\Components\Query::withoutPairByKeyValue
    • League\Uri\Components\Query::fromFormData
    • League\Uri\Components\Query::toFormData
    • League\Uri\Components\URLSearchParams

    Fixed

    • League\Uri\Components\Query::sort to improve WHATWG compliance.
    • League\Uri\QueryString::buildFromPairs should throw SyntaxError instead of TypeError
    • League\Uri\Components\Query uses internally League\Uri\KeyValuePair\Converter
    • League\Uri\Components\Query::toRFC3986 is no longer deprecated
    • League\Uri\Components\Query::jsonSerualize uses toFormData instead of toRFC1738
    • League\Uri\Components\Query fix float handling.
    • Exception message typo fix #121 by GrahamCampbell

    Deprecated

    • League\Uri\Modifier::removeQueryPairs use League\Uri\Modifier::removeQueryPairsByKey instead.
    • League\Uri\Components\Query::withoutPair use League\Uri\Components\Query::withoutPairByKey instead.

    Removed

    • None
    Open source →
    Release notes

    version 7.3.0

    Compare

    Choose a tag to compare

    Open source →
  10. 7.2.1 30 Aug 2023
    Release notes

    Added

    • None

    Fixed

    • composer.json constraints

    Deprecated

    • None

    Removed

    • None
    Open source →
    Release notes

    version 7.2.1

    Compare

    Choose a tag to compare

    Open source →
  11. 7.2.0 30 Aug 2023
    Release notes

    Added

    • Modifier::appendQueryPairs
    • Modifier::mergeQueryPairs
    • Modifier::removeQueryPairs
    • Modifier::removeEmptyQueryPairs
    • Modifier::appendQueryParameters
    • Modifier::mergeQueryParameters
    • Modifier::removeQueryParameters
    • Modifier::removeQueryParametersIndices

    Fixed

    • None

    Deprecated

    • Modifier::removeParams use Modifier::removeQueryParameters instead
    • Modifier::removePairs use Modifier::removeQueryPairs instead
    • Modifier::removeEmptyPairs use Modifier::removeEmptyQueryPairs instead

    Removed

    • None
    Open source →
  12. 7.1.0 21 Aug 2023
    Release notes

    Added

    • Modifier::encodeQuery

    Fixed

    • Using the Encoder class to normalize encoding and decoding in all packages

    Deprecated

    • None

    Removed

    • None
    Open source →
  13. 7.0.0 10 Aug 2023
    Release notes

    Added

    • value method to replace the removed getContent method.
    • requires League\Uri package.
    • League\Uri\Components\Scheme::new named constructor
    • League\Uri\Components\UserInfo::new named constructor
    • League\Uri\Components\Host::new named constructor
    • League\Uri\Components\Domain::new named constructor
    • League\Uri\Components\Fragment::new named constructor
    • League\Uri\Components\Query::new named constructor
    • League\Uri\Components\Path::new named constructor
    • League\Uri\Components\DataPath::new named constructor
    • League\Uri\Components\UserInfo::withUser modifier method
    • League\Uri\Components\UserInfo::withPass modifier method
    • League\Uri\Components\Port::fromNumber modifier method
    • League\Uri\Components\Query::parameters accessing method
    • League\Uri\Components\Query::parameter accessing method
    • League\Uri\Components\Query::hasParameter accessing method
    • League\Uri\IPv4Calculators\MissingIPv4Calculator exception
    • League\Uri\Components\OffsetOutOfBounds exception added
    • League\Uri\Modifier to replace deprecated League\Uri\Modifier

    Fixed

    • converts Value Objects properties to being private readonly where possible.
    • All components class constructors (except for the UserInfo and the Authority classes) are made private use the available named constructors instead
    • Named constructors default value are removed, you need to explicitly add an argument value or use the ::new() named constructor instead.
    • UserInfo class makes a distinction between null and the empty string.
    • Query::has accessing method accept a variadic parameters to check multiple keys at the same time.
    • Domain value can be null or a non-empty string previously it would trigger an exception
    • Domain::append and Domain::prepend respects the root status of the instance.

    Deprecated

    • All createFromString named constructors are replaced by the new named constructor.
    • All createFromNull named constructors are replaced by the new named constructor.
    • All remaining named constructors which starts with createFrom* replaced by the same method starting with from*. For example Authority::createFromUri is deprecated in favor of Authority::fromUri
    • Query::params is replaced by Query::parameters and Query::parameter
    • HierarchicalPath::segments use HierarchicalPath::getIterator instead
    • Domain::labels use Domain::getIterator instead
    • League\Uri\UriModifier use League\Uri\Modifier
    • League\Uri\IPv4Normalizer use League\Uri\Modifier instead

    Removed

    • PHP7 and PHP8.0 support
    • withContent and getContent methods
    • Support for __set_state
    • Support for float type as possible argument for components
    • Support for int type as possible argument for components
    • UserInfo::withUserInfo modifier method use UserInfo::withUser and/or UserInfo::withPass instead
    • Remove the Exceptions namespace
    • League\Uri\Exceptions\IPv4CalculatorMissing use League\Uri\IPv4Calculators\MissingIPv4Calculator instead
    • League\Uri\Exceptions\OffsetOutOfBounds use League\Uri\Components\OffsetOutOfBounds instead
    • League\Uri\QueryString class. Class moved to the uri-interfaces package.
    Open source →
  14. 7.0.0-beta.2 26 Jun 2023 pre-release

    Nothing published for this version

  15. 7.0.0-beta.1 26 Jun 2023 pre-release

    Nothing published for this version

  16. 2.4.2 13 Aug 2023

    Nothing published for this version

  17. 2.4.1 26 May 2022
    Release notes

    Added

    • None

    Fixed

    • conversion query component for non ASCII characters see #202

    Deprecated

    • None

    Remove

    • None
    Open source →
  18. 2.4.0 02 Aug 2021
    Release notes

    Added

    • Component::toString
    • IDNA conversion in now normalize using the Uri-Interface package classes

    Fixed

    • conversion host component from ASCII to unicode no longer throw

    Deprecated

    • None

    Remove

    • None
    Open source →
  19. 2.3.0 26 Jan 2021
    Release notes

    Added

    • Authority::createFromNull
    • Authority::createFromString
    • Authority::createFromComponents
    • DataPath::createFromFilePath
    • DataPath::createFromString
    • Domain::createFromString
    • Domain::createFromHost
    • HierarchicalPath::createFromPath
    • HierarchicalPath::createFromString
    • Path::createFromString
    • Support for PHP8.0

    Fixed

    • Fix RFC1738 encoding in QueryString::build
    • Improve UriModifier using the newly added named constructors.

    Deprecated

    • Authority::__construct replaced by Authority named constructors
    • DataPath::createFromPath replaced by DataPath::createFromFilePath
    • Domain::__construct replaced by Domain named constructors
    • HierarchicalPath::__construct replaced by HierarchicalPath named constructors

    Remove

    • Support for PHP7.2
    Open source →
  20. 2.2.1 09 Feb 2020
    Release notes

    Added

    • None

    Fixed

    Deprecated

    • None

    Remove

    • None
    Open source →
  21. 2.2.0 08 Feb 2020
    Release notes

    Added

    • None

    Fixed

    • back port improvement made to idn_to_ascii usage see #150 thanks to ntzm

    Deprecated

    • None

    Remove

    Open source →
  22. 2.1.0 19 Dec 2019
    Release notes

    Added

    • League\Uri\UriModifier::removeEmptyPairs - to remove empty pairs from the URL object.

    Fixed

    • Improve UserInfo decoding issue #28
    • Improve processing URI object with League\Uri\UriModifier with a better distinction between empty and undefined URI component.

    Deprecated

    • None

    Remove

    • None
    Open source →
  23. 2.0.1 05 Nov 2019
    Release notes

    Added

    • None

    Fixed

    • Improved Domain name detection according to RFC1132 see issue #27
    • Normalized exception message formatting.

    Deprecated

    • None

    Remove

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

    Added

    • League\Uri\IPv4HostNormalizer to ease IPV4 host string normalization.
    • League\Uri\UriModifier to ease manipulating League\Uri\UriInterface and Psr\Http\Message\UriInterface implementing objects.
    • League\Uri\QueryString to parse, extract and build query string and parameters
    • All components classes implement the League\Uri\Contracts\ComponentInterface
    • All components classes expose the createFromUri named constructor to instantiate a component object from a URI object
    • League\Uri\Components\Authority to represent the URI authority component
    • League\Uri\Components\Fragment::decoded to return the safely decoded fragment content
    • League\Uri\Components\UserInfo::decoded to return the safely decoded user info content
    • League\Uri\Components\Port::toInt to return the int representation of the Port or null
    • League\Uri\Components\Domain to better process domain host
    • League\Uri\Components\HierarchicalPath::createAbsoluteFromSegments
    • League\Uri\Components\HierarchicalPath::createRelativeFromSegments
    • League\Uri\Components\HierarchicalPath::segments to return the component segments
    • League\Uri\Components\HierarchicalPath::get to return a specific segment
    • League\Uri\Components\Query follows more closely the URLSearchParams specifications from the WHATWG group
    • League\Uri\Components\Query::createFromRFC3986 to return a new object from a RFC3986 query string
    • League\Uri\Components\Query::createFromRFC1738 to return a new object from a RFC1738 query string
    • League\Uri\Components\Query::toRFC3986 to return a RFC3986 query string
    • League\Uri\Components\Query::toRFC1738 to return a RFC1738 query string

    Fixed

    • Components classes are made final
    • getContent no-longer takes any parameter
    • Host objects throws League\Uri\Exception\IdnSupportMissing on mis-configured or absent Intl extension presence.
    • UserInfo::__construct expects two arguments the user and the pass instead of one.
    • Query::__construct is now private
    • Query parsing/building is fixed so that a round between parsing and building returns the original input.

    Deprecated

    • None

    Remove

    • support for PHP7.0
    • support for PHP7.1
    • support for Public Suffix List resolution
    • isEmpty and isNull methods are removed
    • League\Uri\parse_query
    • League\Uri\build_query
    • League\Uri\extract_query
    • League\Uri\pairs_to_params
    • League\Uri\QueryBuilder
    • League\Uri\QueryParser
    • League\Uri\Components\ComponentInterface
    • League\Uri\Components\HierarchicalPath::createFromSegments
    • League\Uri\Components\HierarchicalPath::getSegments
    • League\Uri\Components\HierarchicalPath::getSegment
    • League\Uri\Components\HierarchicalPath::IS_ABSOLUTE
    • League\Uri\Components\HierarchicalPath::IS_RELATIVE
    • The following methods are transferred to the new League\Uri\Components\Domain class
    • League\Uri\Components\Host::isAbsolute
    • League\Uri\Components\Host::getLabels
    • League\Uri\Components\Host::getLabel
    • League\Uri\Components\Host::keys
    • League\Uri\Components\Host::count
    • League\Uri\Components\Host::getIterator
    • League\Uri\Components\Host::append
    • League\Uri\Components\Host::prepend
    • League\Uri\Components\Host::replaceLabel
    • League\Uri\Components\Host::withoutLabels
    • League\Uri\Components\Host::withRootLabel
    • League\Uri\Components\Host::withoutRootLabel
    • League\Uri\Components\Query::ksort
    • League\Uri\Components\Query::getParams
    • League\Uri\Components\Query::getParam
    • League\Uri\Components\Query::getPairs
    • League\Uri\Components\Query::getPair
    • League\Uri\Components\Query::hasPair
    Open source →
  25. 1.8.2 24 Oct 2018
    Release notes

    Added

    • None

    Fixed

    • Issues #22 bug with path encoding and path validation before path modification see issue #4

    Deprecated

    • None

    Remove

    • None
    Open source →
  26. 1.8.1 06 Jul 2018
    Release notes

    Added

    • None

    Fixed

    • Issue #21 namespace collision with exception usage in Uri\QueryParser and QUri\QueryBuilder

    Deprecated

    • None

    Remove

    • None
    Open source →
  27. 1.8.0 14 Mar 2018
    Release notes

    Added

    • IPvFuture support

    Fixed

    • Using PHPStan
    • Using the new scrutinizr engine for PHP
    • Bug fix Port class to conform to RFC3986 now allow any port number greater or equals to 0.
    • Improve Host parsing

    Deprecated

    • None

    Remove

    • mbstring extension requirement
    Open source →
  28. 1.7.1 16 Feb 2018
    Release notes

    Added

    • None

    Fixed

    • The Host resolver and its usage is lazyloaded so that Host only requires and used them if needed
    • Bug fix issue with:
      • Host::withPublicSuffix
      • Host::withRegistrableDomain
      • Host::withSubDomain methods that were leaving the current Host object corrupted in some cases.

    Deprecated

    • None

    Remove

    • None
    Open source →
  29. 1.7.0 31 Jan 2018
    Release notes

    Added

    • Adding the possibility to use your own domain resolver object.
      • Host::__construct can take an optional Rules object as the domain resolver
      • Host::createFromIp can take an optional Rules object as the domain resolver
      • Host::createFromLabels can take an optional Rules object as the domain resolver
      • Host::withDomainResolver to enable switching to current domain resolver object

    Fixed

    • The domain resolver as a Rules object is now injecting into the Host domain so that its data can be cached independently of the filecache. If not domain resolver is provided the Host will fallback to using the filecache with the data being kept for 7 days in a vendor subdirectory.

    • Decoupled the QueryBuilder and the QueryParser from ComponentTrait

    Deprecated

    • None

    Remove

    • None
    Open source →
  30. 1.6.0 05 Dec 2017
    Release notes

    Added

    • Host::withPublicSuffix to complete registered name manipulation methods

    Fixed

    • registered name infos loading

    Deprecated

    • None

    Remove

    • None
    Open source →
  31. 1.5.0 01 Dec 2017
    Release notes

    Added

    • Uri\QueryParser class to parse any string into key/pair value or extract PHP values
    • Uri\QueryBuilder class to build a valid query string from a collection of Key/pair values
    • Uri\pairs_to_params alias for QueryParser::convert

    Fixed

    • URI Host parsing to respect RFC3986
    • improve internal code

    Deprecated

    • Query::parse replaced by QueryParser::parse
    • Query::extract replaced by QueryParser::extract
    • Query::build replaced by QueryBuilder::build
    • Host::getRegisterableDomain replaced by Host::getRegistrableDomain
    • Host::withRegisterableDomain replaced by Host::withRegistrableDomain

    Remove

    • internal traits QueryParserTrait, HostInfoTrait
    Open source →
  32. 1.4.1 24 Nov 2017
    Release notes

    Added

    • None

    Fixed

    • URI Hostname parser local cache update

    Deprecated

    • None

    Remove

    • None
    Open source →
  33. 1.4.0 22 Nov 2017
    Release notes

    Added

    Fixed

    • Issue #109 Dependencie on a unstable package

    Deprecated

    • None

    Remove

    Open source →
  34. 1.3.0 17 Nov 2017
    Release notes

    Added

    • Query::getSeparator, Query::withSeparator to allow modifying query string separator.
    • Query::__construct takes a second argument, the query separator which default to &.
    • Query::__debugInfo nows adds query separator informations.
    • Query::withoutParams to complement Query::withoutPairs method.
    • Query::createFromParams to complement Query::createFromPairs named constructor.
    • Query::withoutNumericIndices to normalized the query string by removing extra numeric indices added by the use of http_build_query.
    • Query::withoutEmptyPairs to normalized the query string #7 and #8

    Fixed

    • Query::merge and Query::append normalized the query string to remove empty pairs see #7 and #8
    • Query::build and Uri\build now accept any iterable structure.

    Deprecated

    • None

    Remove

    • None
    Open source →
  35. 1.2.0 06 Nov 2017
    Release notes

    Added

    • League\Uri\build_query as an alias of Query::build

    Fixed

    • function docblocks

    Deprecated

    • None

    Remove

    • None
    Open source →
  36. 1.1.1 03 Nov 2017
    Release notes

    Added

    • League\Uri\parse_query as an alias of Query::parse
    • League\Uri\extract_query as an alias of Query::extract

    Fixed

    • League\Uri\parse_query returned value was the wrong one

    Deprecated

    • None

    Remove

    • None
    Open source →
  37. 1.1.0 24 Oct 2017
    Release notes

    Added

    • League\Uri\parse_query as an alias of Query::extract

    Fixed

    • Internal call in PHP7.2 with incompatible definitions
    • update PHP Domain Parser to be compatible with PHP7.2 deprecation notice
    • remove restriction to constructor characters for Path, Query and UserInfo.

    Deprecated

    • None

    Remove

    • None
    Open source →
  38. 1.0.4 10 Aug 2017
    Release notes

    Added

    • None

    Fixed

    • Bug fix label conversion depending on locale issue #102

    Deprecated

    • None

    Remove

    • None
    Open source →
  39. 1.0.3 27 Apr 2017
    Release notes

    Added

    • None

    Fixed

    Deprecated

    • None

    Remove

    • None
    Open source →
  40. 1.0.2 19 Apr 2017
    Release notes

    Added

    • None

    Fixed

    • Improve registered name validation issue #5

    Deprecated

    • None

    Remove

    • None
    Open source →
  41. 1.0.1 06 Feb 2017
    Release notes

    Added

    • None

    Fixed

    • Update idn to ascii algorithm from INTL_IDNA_VARIANT_2003 to INTL_IDNA_VARIANT_UTS46

    Deprecated

    • None

    Remove

    • None
    Open source →
  42. 1.0.0 17 Jan 2017
    Release notes

    Added

    • None

    Fixed

    • Improve validation check for Query::build
    • Remove `func_* function usage
    • Improve HierarchicalPath::createFromSegments
    • Internal code simplification

    Deprecated

    • None

    Remove

    • None
    Open source →
  43. 1.0.0-RC1 09 Jan 2017 pre-release
    Release notes

    Added

    • ComponentInterface
    • EncodingInterface
    • HierarchicalPath::withDirname
    • HierarchicalPath::withBasename
    • HierarchicalPath::withoutSegments
    • HierarchicalPath::replaceSegment
    • Host::withRegisterableDomain
    • Host::withSubdomain
    • Host::withRootLabel
    • Host::withoutRootLabel
    • Host::withoutLabels
    • Host::replaceLabel
    • Query::getParams
    • Query::getParam
    • Query::append
    • Query::hasPair
    • Query::withoutPairs

    Fixed

    • ComponentInterface::getContent supports RFC1738
    • The methods that accept integer offset supports negative offset
      • HierarchicalPath::getSegment
      • HierarchicalPath::replaceSegment
      • HierarchicalPath::withoutSegments
      • Host::getLabel
      • Host::replaceLabel
      • Host::withoutLabels
    • Query::merge only accepts string

    Deprecated

    • None

    Remove

    • PHP5 support
    • Implementing League\Uri\Interfaces\Component
    • Query::hasKey
    • Query::without
    • Query::filter
    • Host::hasKey
    • Host::without
    • Host::filter
    • Host::replace
    • HierarchicalPath::hasKey
    • HierarchicalPath::without
    • HierarchicalPath::filter
    • HierarchicalPath::replace
    • League\Uri\Components\PathInterface
    Open source →
  44. 0.5.0 09 Dec 2016
    Release notes

    Added

    • None

    Fixed

    • Remove League\Uri\Interfaces\CollectionComponent interface dependencies from:

      • League\Uri\Components\Host
      • League\Uri\Components\HierarchicalPath
    • Bug fix League\Uri\Components\Query::build

    • Update dependencies on League\Uri\Interfaces

    Deprecated

    • None

    Remove

    • None
    Open source →
  45. 0.4.0 01 Dec 2016
    Release notes

    Added

    • None

    Fixed

    • League\Uri\Components\Host::getContent now support correctly RFC3987
    • League\Uri\Components\Host::__toString only returns RFC3986 representation
    • League\Uri\Components\UserInfo::getUser to use the $enc_type parameter
    • League\Uri\Components\UserInfo::getPass to use the $enc_type parameter

    Deprecated

    • None

    Remove

    • League\Uri\Components\Host::isIdn
    • League\Uri\Components\Port::getDecoded
    • League\Uri\Components\Scheme::getDecoded
    Open source →
  46. 0.3.0 29 Nov 2016
    Release notes

    Added

    • League\Uri\Components\Exception as the base exception for the library
    • League\Uri\Components\DataPath::getDecoded returns the non-encoded path
    • League\Uri\Components\HierarchicalPath::getDecoded returns the non-encoded path
    • League\Uri\Components\Path::getDecoded returns the non-encoded path
    • League\Uri\Components\Fragment::getDecoded returns the non-encoded fragment
    • League\Uri\Components\Port::getDecoded returns the non-encoded port
    • League\Uri\Components\Scheme::getDecoded returns the non-encoded scheme
    • League\Uri\Components\Query::extract public static method returns a hash similar to parse_str without the mangling from the query string

    Fixed

    • getContent is updated to support RFC3987

    Deprecated

    • None

    Removed

    • Query::parsed use Query::extract instead
    • Query::parsedValue use Query::extract instead
    Open source →
  47. 0.2.1 15 Nov 2016
    Release notes

    Added

    • None

    Fixed

    • issue #84. Query string is not well encoded.

    Deprecated

    • None

    Removed

    • None
    Open source →
  48. 0.2.0 09 Nov 2016
    Release notes

    Added

    • Query::parsed returns an array similar to parse_str result with a second options with unmangled key.
    • Query::getParsedValue returns single value from the parse and unmangled PHP variables.
    • Host::createFromIp a name constructor to create a host from a IP
    • Host::getIp returns the IP part from the host if present otherwise returns null

    Fixed

    • Host::__construct no longers takes a IPv6 without delimiter as a valid argument.

    Deprecated

    • None

    Removed

    • None
    Open source →
  49. 0.1.1 09 Nov 2016
    Release notes
    • improve dependencies - broken
    Open source →
  50. 0.1.0 17 Oct 2016
    Release notes

    Added

    • None

    Fixed

    • League\Uri\QueryParser is now a trait League\Uri\Components\Traits\QueryParser used by League\Uri\Components\Query
    • League\Uri\Components\UserInfo now only accepts string and null as constructor parameters.

    Deprecated

    • None

    Removed

    • League\Uri\Components\User
    • League\Uri\Components\Pass
    • League\Uri\QueryParser
    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