domainvalidity / php-domain-validator
Light PHP package to validate domains.
Package info
github.com/domainvalidity/php-domain-validator
pkg:composer/domainvalidity/php-domain-validator
Requires
- php: ^8.2.0
Requires (Dev)
- pestphp/pest: ^3.0
- phpstan/phpstan: ^1.10
- phpunit/phpunit: ^11.5
- squizlabs/php_codesniffer: ^3.8
- symfony/var-dumper: ^7.0
README
Doma(in)Validity PHP package
Light PHP package to validate domains using the Mozilla Public Suffix List.
Doma(in)Validity was born because the
usual "validate a domain" regex grows new edge cases every time you
look away — multi-level TLDs (co.uk, com.mx), IDN labels, private
suffixes (*.amazonaws.com). This package outsources the hard part to
the PSL.
Requirements
- PHP >= 8.2.0 (for v3.x)
- PHP >= 8.1.0 (for v2.x)
Installation
composer require domainvalidity/php-domain-validator
Quick start
use DomainValidity\Factory; $psl = file_get_contents('path/to/public_suffix_list.dat'); $validator = Factory::make($psl); $host = $validator->validate('www.domainvalidity.dev'); $host->isValid(); // true $host->tld(); // 'dev' $host->domain(); // 'domainvalidity.dev' $host->toString(); // 'www.domainvalidity.dev'
Cache the Public Suffix List and refresh at most once per day. It is updated only a few times per week, so more frequent fetching is wasteful. See the usage guide below for a secure, cached fetch pattern.
Documentation
docs/USAGE.md— full usage guide, secure PSL fetching, caching strategy, complete API reference, worked examples, and error-handling model.SECURITY.md— supported versions and how to report vulnerabilities.CHANGELOG.md— release history.
License
MIT — see LICENSE.
