xandco / domainparser
Domain Parser, parses and validates a domain name.
Requires
- php: >=8.2
- ext-json: *
Requires (Dev)
- pestphp/pest: ^2.34
README
Domain Parser simply parses a domain name you supply.
During the parsing process, the package will download a list of all Public Suffixes provided by Mozilla, iterate through it and save it to the systems temp folder and will update this list after a week. Next, the supplied domain will get parsed and broken up into parts and compared to the saved suffix list to determine the TLD the domain is using, then will complete a sanity check on the domain to ensure validity of it. Once this is finished, you'll receive an object containing all relevant information on the domain and its parts.
Installation
Install this package via composer:
$ composer require warden/domain-parser
This service provider must be installed (if using anything below Laravel 5.5)
// config/app.php 'providers' => [ DomainParser\DomainParserServiceProvider::class, ];
Publish and customize configuration file with:
$ php artisan vendor:publish --provider="DomainParser\DomainParserServiceProvider"
Usage
Create new DomainParser
object:
use DomainParser\DomainParser; ... $domainParser = new DomainParser( $options = [] );
Then call parse()
method to parse the domain:
$domainParser->parse( 'www.example.com' );
Here is an example of the output:
[ 'valid_hostname' => true, 'fqdn' => [ 'ascii' => 'www.example.com', 'idn' => 'www.example.com' ], 'sub_domains' => [ 'ascii' => [ 0 => 'www' ], 'idn' => [ 0 => 'www' ] ], 'domain' => [ 'ascii' => 'example', 'idn' => 'example' ], 'tld' => [ 'group' => [ 'ascii' => 'com', 'idn' => 'com' ], 'tld' => [ 'ascii' => 'com', 'idn' => 'com' ] ] ]
Options
When creating the DomainParser
object, there is only one array
parameter that can be passed, which is optional.
Options array parameters:
Instead of setting these options when creating the object, you can alternatively set these globally in the configuration file. You can publish the configuration and customize it as shown in the Installation section.
Changelog
Please see the changelog for more information on what has changed recently.
Testing
$ composer test
Contributing
Please see contributing.md for details and a todolist.
Security
If you discover any security related issues, please email hello@xand.co instead of using the issue tracker.
Credits
License
MIT - Please see the license file for more information.