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.
- PHP >= 8.2.0 (for v3.x)
- PHP >= 8.1.0 (for v2.x)
composer require domainvalidity/php-domain-validatoruse 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.
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.
MIT — see LICENSE.
