bentools / hostname-extractor
Hostname extractor - A library to find parts of a hostname (suffix, tld, subdomain, ...)
Requires
- php: >=7.1
- ext-mbstring: *
- bentools/iterable-functions: ^1.1
- bentools/violin: 1.0.x-dev
- guzzlehttp/guzzle: ^6.0
Requires (Dev)
- bentools/uri-factory: ^1.0
- guzzlehttp/psr7: ^1.4
- php-coveralls/php-coveralls: ^2.1
- phpunit/phpunit: ^7.0
- psr/simple-cache: ^1.0
- squizlabs/php_codesniffer: ^3.4
- symfony/cache: ^4.0
- symfony/var-dumper: ^4.0
README
Hostname Extractor
A simple library to manipulate domains.
Usage
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.
Installation
PHP 7.1+ with mbstring
extension is required.
composer require bentools/hostname-extractor ^1.0
Tests
./vendor/bin/phpunit
License
MIT.
See also
bentools/querystring - Easily manipulate your query strings.
bentools/uri-factory - PSR-7 UriInterface
factory with multiple libaries support.