Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Php Domain Parser Laravel Package

jeremykendall/php-domain-parser

Parse, validate, and normalize domains, subdomains, and suffixes using the Public Suffix List. Extract registrable domain vs. subdomain, handle IDNs and edge cases, and keep parsing rules current via PSL updates—ideal for URL processing, cookies, and security checks.

View on GitHub
Deep Wiki
Context7
6.4.0

Added

  • DomainName::withRootLabel, DomainName::withoutRootLabel, DomainName::isAbsolute methods to handle absolute domain names.
  • DomainName::when to allow conditionable when building the domain.

Fixed

  • Absolute domain name can now also be resolved by the package see issue #361 prior to this release an exception was thrown.
  • Since we no longer support PHP7 type hint and return type are improved.
  • Resolving private suffixes that have a wildcarded subdomain suffix #363 by [@wikando-ck](https://github.com/wikando-ck)

[!WARNING] When upgrading to version 6.4 you MUST refresh your local cache for the fix on private domain resolution to take effect.

Deprecated

  • None

Removed

  • None
6.3.1

What's Changed

6.3.0

Added

  • RegisteredName class to allow domain with IP4-like labels

Fixed

  • Using PHPUnit 10
  • Domain decorates the new RegisteredName class #347
  • Host::withoutLabel works without arguments.

Deprecated

  • None

Removed

  • None
6.2.0

Added

  • None

Fixed

  • Internal code to make services readonly

  • Internal code to make VO properties readonly

  • Internal code improved typehinting

  • Deprecated

  • None

Removed

  • PHP7 and PHP8.0 support
6.1.2

Added

  • None

Fixed

  • #321 remove regression when resolving private domain suffix.

Deprecated

  • None

Removed

  • None
6.1.1

Added

  • None

Fixed

  • #321 improve resolving private domain suffix. Rules::getPrivateDomain is more restrictive It will throw if the domain name does not contain a valid "private" TLD.

Deprecated

  • None

Removed

  • None
6.1.0

Added

  • TimeToLive::until
  • TimeToLive::fromDurationString

Fixed

  • .gitattributes files to be filter out.
  • TimeToLive marked as internal
  • Host::toUnicode method MUST never throw exceptions on conversion according to RFC3490.
  • UnableToResolveDomain typo in the exception message

Deprecated

  • TimeToLive::fromDateTimeInterface use TimeToLive::fromNow
  • TimeToLive::fromScalar use TimeToLive::convert

Removed

  • None
6.0.0

Added

  • Adding proper Interfaces
  • Added Domain::clear to easily initialize an empty domain object
  • Added Domain::slice to easily slice a domain object
  • Added ResolvedDomain object to normalize Resolver results.
  • Added Suffix object to replace the PublicSuffix object from v5.
  • Public Suffix List and IANA Top Level Domain List are fully decoupled
  • Added Idna, IDN support has been completely revamped
  • Added internal Stream class, to improve path/stream resolution
  • Resolver uses by default UTS#46 IDNA2008 algorithm to convert domain names
  • Storage capability is now optional and can be based on PHP-FIG related interfaces to improve interoperability
  • Pdp\TopLevelDomains::getIANADomain which throws on syntax error and if no effective TLD is found (behave like Pdp\TopLevelDomains::resolve in v5).

Fixed

  • The Pdp\Domain class not longer directly exposes Effective TLD status.
  • Effective TLD resolver (Pdp\Rules::resolve and Pdp\TopLevelDomains::resolve) no longer accept IDNA options.
  • Rules::getICANNDomain, Rules::getPrivateDomain will throw even if a PublicSuffix is found but does not belong to the correct PSL section.
  • Pdp\TopLevelDomains::resolve acts like Pdp\Rules::resolve and only throw on TypeError

Deprecated

  • None

Removed

  • __toString and __debugInfo usage
  • Support for PHP7.4-
  • Composer script for automatic updates of the remote databases
  • CLI command bin/update-psl
  • Pdp\Cache, Pdp\CacheException: The package PSR-16 Cache implementation using the underlying filesystem.
  • Pdp\HttpClient, Pdp\CurlHttpClient and Pdp\HttpClientException: The package Http Client.
  • Pdp\Installer, Pdp\Manager: The package source manager and installer
  • Pdp\Logger, The package logger implementation
  • Pdp\Rules::ALL_DOMAINS constant deprecated in version 5.3
  • Pdp\Domain::getDomain deprecated in version 5.3
  • Pdp\Domain::resolve
  • Pdp\Domain::getPublicSuffix replaced by Pdp\ResolvedDomain::suffix
  • Pdp\Domain::getRegistrableDomain replaced by Pdp\ResolvedDomain::registrableDomain
  • Pdp\Domain::getSubDomain replaced by Pdp\ResolvedDomain::subDomain
  • Pdp\Domain::withPublicSuffix replaced by Pdp\ResolvedDomain::withSuffix
  • Pdp\Domain::getLabel replaced by Pdp\Domain::label
  • Pdp\Domain::isTransitionalDifferent replaced by Pdp\IdnaInfo::isTransitionalDifferent
  • Pdp\PublicSuffix replaced by Pdp\Suffix
  • Accessing suffix information from the Pdp\Domain object is no longer possible you need to do it from Pdp\Suffix
  • Pdp\TopLevelDomains::contains without replacement
  • Internal Converter classes (implementation details are no longer exposed).
5.7.2

Added

  • None

Fixed

Deprecated

  • None

Removed

  • None
5.7.1

Added

  • None

Fixed

  • Cache throws when cache directory doesn't exist #280

Deprecated

  • None

Removed

  • None
5.7.0

Added

  • Rules::getCookieDomain
  • Rules::getICANNDomain
  • Rules::getPrivateDomain
  • CouldNotResolvePublicSuffix::dueToUnresolvableDomain

Fixed

  • Improve type hinting and return type by dropping EOL PHP versions support.
  • Improve development environment by dropping EOL PHP versions support.
  • Fix composer script

Deprecated

  • None

Removed

  • Support for PHP7.0 and PHP7.1
  • The external data from IANA and mozilla is no longer part of the package and will be downloaded only on demand on composer update/install.
5.6.0

Added

  • A simple Psr3 compatible logger class which output the logs to you cli console.

Fixed

  • composer.json updated to be composer 2.0 ready
  • package bundle installer is rewritten to improve its usage see #249 and #250

Deprecated

  • None

Removed

  • None
5.5.0

Added

  • Support for IDNA options see #236 thanks to Insolita.
  • PublicSuffix::labels and Domain::labels to return the VO labels see #241
  • IDNAConverterTrait::parse (internal)

Fixed

  • Don't swallow cache errors #232
  • Update travis settings to allow testing against future version of PHP.

Deprecated

  • IDNAConverterTrait::setLabels replaced by IDNAConverterTrait::parse (internal)

Removed

  • None
5.4.0

Added

  • Pdp\TopLevelDomains to allow resolving domain againts IANA Root zone database
  • Pdp\TLDConverter converts the IANA Root Zones database into an associative array
  • Pdp\Manager::getTLDs a service to return a cache version of the IANA Root zone database
  • Pdp\Manager::refreshTLDs a service to refresh the cache version of the IANA Root zone database
  • added a new $ttl parameter to improve PSR-16 supports to
    • Pdp\Manager::__construct
    • Pdp\Manager::getRules
    • Pdp\Manager::refreshRules
  • Pdp\Exception\CouldNotLoadTLDs exception

Fixed

  • Pdp\IDNAConverterTrait::setLabels improve IDN domain handling
  • Pdp\IDNAConverterTrait throws a UnexpectedValueException if the Intl extension is misconfigured see #230

Deprecated

  • None

Removed

  • None
5.3.0

Added

  • Pdp\PublicSuffixListSection interface implemented by Pdp\Rules and Pdp\PublicSuffix
  • Pdp\DomainInterface interface implemented by Pdp\Domain and Pdp\PublicSuffix
  • Pdp\Domain::getContent replaces Pdp\Domain::getDomain
  • Pdp\Domain::withLabel adds a new label to the Pdp\Domain.
  • Pdp\Domain::withoutLabel removes labels from the Pdp\Domain.
  • Pdp\Domain::withPublicSuffix updates the Pdp\Domain public suffix part.
  • Pdp\Domain::withSubDomain updates the Pdp\Domain sub domain part.
  • Pdp\Domain::append appends a label to Pdp\Domain.
  • Pdp\Domain::prepend prepends a label to Pdp\Domain.
  • Pdp\Domain::resolve attach a public suffix to the Pdp\Domain.
  • Pdp\Domain::isResolvable tells whether the current Pdp\Domain can have a public suffix attached to it or not.
  • Pdp\PublicSuffix::createFromDomain returns a new Pdp\PublicSuffix object from a Pdp\Domainobject
  • Pdp\Exception sub namespace to organize exception. All exception extends the Pdp\Exception class to prevent BC break.

Fixed

  • Pdp\Domain domain part computation (public suffix, registrable domain and sub domain)
  • Pdp\Domain and Pdp\PublicSuffix host validation compliance to RFC improved
  • Improve Pdp\Converter and Pdp\Manager class to better report error on IDN conversion.
  • Improve Pdp\Installer vendor directory resolution see PR #222
  • Pdp\Exception nows extends InvalidArgumentException instead of RuntimeException

Deprecated

  • Pdp\Domain::getDomain use instead Pdp\Domain::getContent
  • Pdp\Rules::ALL_DOMAINS use the empty string instead

Removed

  • None
5.2.0

Added

  • Pdp\Rules::getPublicSuffix returns a Pdp\PublicSuffix value object
  • Pdp\Rules::__set_state is implemented
  • Pdp\Domain::toUnicode returns a Pdp\Domain with its value converted to its Unicode form
  • Pdp\Domain::toAscii returns a Pdp\Domain with its value converted to its AScii form
  • Pdp\PublicSuffix::toUnicode returns a Pdp\PublicSuffix with its value converted to its Unicode form
  • Pdp\PublicSuffix::toAscii returns a Pdp\PublicSuffix with its value converted to its AScii form

Fixed

  • Pdp\Domain::getDomain returns the normalized form of the domain name
  • Pdp\PublicSuffix is no longer internal.
  • Normalizes IDN conversion using a internal IDNConverterTrait
  • Internal code improved by requiring PHPStan for development

Deprecated

  • None

Removed

  • None
5.1.0

Added

  • Pdp\Rules::createFromPath named constructor to returns a new instance from a path
  • Pdp\Rules::createFromString named constructor to returns a new instance from a string

Fixed

  • Pdp\CurlHttpClient default curl options improved

Deprecated

  • None

Removed

  • None
5.0.0

Added

  • Pdp\Exception a base exception for the library
  • Pdp\Rules a class to resolve domain name against the public suffix list
  • Pdp\Domain an immutable value object to represents a parsed domain name
  • Pdp\Installer a class to enable improve PSL maintenance
  • Pdp\Cache a PSR-16 file cache implementation to cache a local copy of the PSL
  • Pdp\Manager a class to enable managing PSL sources and Rules objects creation
  • Pdp\Converter a class to convert the PSL into a PHP array

Fixed

  • invalid domain names improved supported
  • idn_* conversion error better handled
  • domain name with RFC3986 encoded string improved supported

Deprecated

  • None

Removed

  • PHP5 support
  • URL Parsing capabilities and domain name validation
  • Pdp\PublicSuffixList class replaced by the Pdp\Rules class
  • Pdp\PublicSuffixManager class replaced by the Pdp\Manager class
  • Pdp\HttpAdapter\HttpAdapterInterface interface replaced by the Pdp\HttpClient interface
  • Pdp\HttpAdapter\CurlHttpAdapter class replaced by the Pdp\CurlHttpClient class
4.0.3-alpha
4.0.2-alpha
4.0.1-alpha

Release to include all commits to master before new-new version (BC breaking v5). Totally pooched semantic versioning so v4 will be kind of an interim version. Apologies ☹️

4.0.0-alpha

Many Improvements, Many BC Breaks

The Most Significant BC Breaks

  • All misspellings of registrable have been corrected (registerable -> registrable) (see #61)
  • All magic methods have been replaced with getters.

Other Updates and BC Breaks

  • #63: Ensure scheme returns null rather than an empty string
  • #64 and #65: Cleans up Exception message
3.0.0

New Features and BC Breaks

IMPORTANT: These are all BC breaking changes (some more significant than others).

  • Adds RFC 3986 scheme support
    • http(s) and ftp(s) are no longer the only supported schemes
    • All RFC 3986 valid schemes are parsed
    • All schemes are lowercased on output regardless of the case passed to the parser
  • The http scheme is no longer prepended to URLs which do not include schemes
  • Renames Public Suffix List update script from ./bin/pdp-psl. to ./bin/update-psl
  • Adds a post-install script to composer.json to update the Public Suffix list when calling composer install
  • Backports PHP 5.4.7 parse_url() fix to pdp_parse_url() and supported PHP 5.3 versions: "Fixed host recognition when scheme is omitted and a leading component separator is present."
2.0.3
  • Fixes #43
2.0.2
  • Fixes bug in bin/parse
  • Updates Public Suffix List
2.0.1
  • Corrects mistake in documentation
  • Updates bin/parse to include suffix validity
2.0.0

Features

  • Adds IDNA support
  • Removes Parser::mbParseUrl, a UTF-8 compatible version of PHP's parse_url
  • Adds global function pdp_parse_url, a UTF-8 compatible version of PHP's parse_url
  • Adds Parser:: isSuffixValid to test validity of domain suffix (thanks to @SmellyFish)

See https://github.com/jeremykendall/php-domain-parser/compare/1.4.6...2.0.0 for detailed version diff

BC Breaks

Library now requires ext-intl and ext-mbstring.

1.4.6

Adds IPv6 support, courtesy of a bugfix submitted by @geekwright.

1.4.5

Documentation updates (removes TODO)

1.4.4

Adds "ext-mbstring" to composer require key

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
symfony/ai-symfony-mate-extension
nexmo/api-specification
capell-app/block-library
axium/identity
cetria/laravel-dummy-models
cetria/reflection-helper
agropredict/sso-auth-bundle
evolvestudio/spam-protection
datacore/hub-sdk
develia/commons
cuci/prototurk-sdk
cuci/prototurk-sdk-symfony
develia/geo-bundle
dreamzy/livewire-charts
touchestate-sdk/php-sdk
22h/doctrine-garbage-collection-bundle
agtp/agtp-php
agtp/mod-php
splash/sonata-admin
splash/metadata