A simple library to manipulate domains.
require_once __DIR__ . '/vendor/autoload.php';
use BenTools\HostnameExtractor\HostnameExtractor;
use BenTools\HostnameExtractor\SuffixProvider\PublicSuffixProvider;
$extractor = new HostnameExtractor(new PublicSuffixProvider());
$hostname = $extractor->extract('my.preferred.domain.co.uk');
dump($hostname->getSubdomain()); // my.preferred
dump($hostname->getDomain()); // domain
dump($hostname->getSuffix()); // co.uk
dump($hostname->getTld()); // uk
dump($hostname->getSuffixedDomain()); // domain.co.uk
dump($hostname->isIp()); // false
dump($hostname->isIpv4()); // false
dump($hostname->isIpv6()); // false
As you can see, co.uk
is considered as a suffix (otherwise, we would have considered that co
is the domain and uk
the suffix / tld).
The library parses the Public Suffix List, which stores thousands of existing suffixes.
To avoid network latency feel free to implement your own BenTools\HostnameExtractor\SuffixProvider\SuffixProviderInterface
or to use your favorite PSR-16 library into a BenTools\HostnameExtractor\SuffixProvider\PSR16CacheSuffixProvider
object.
PHP 7.1+ with mbstring
extension is required.
composer require bentools/hostname-extractor ^1.0
./vendor/bin/phpunit
MIT.
bentools/querystring - Easily manipulate your query strings.
bentools/uri-factory - PSR-7 UriInterface
factory with multiple libaries support.