Рассмотрите возможность использования https://github.com/jeremykendall/php-domain-parser в качестве поддерживаемой альтернативы.
TLDExtract
точно отделяет gTLD или ccTLD (общий домен верхнего уровня или домен верхнего уровня с кодом страны) от зарегистрированного домена и поддоменов URL-адреса, например, анализатор домена. Например, предположим, что вам нужна только часть «google» в «http://www.google.com».
Все понимают это неправильно. Разделение на '.' и использование последних двух элементов имеет большое значение, только если вы думаете о простых доменах, например .com. Подумайте, например, о синтаксическом анализе http://forums.bbc.co.uk: описанный выше простой метод разделения даст вам «co» в качестве домена и «uk» в качестве TLD вместо «bbc» и «co.uk» соответственно. .
TLDExtract
с другой стороны, знает, как выглядят все gTLD и ccTLD, просматривая существующие в настоящее время в соответствии со списком общедоступных суффиксов. Таким образом, учитывая URL-адрес, он знает свой субдомен по своему домену, а свой домен по коду страны.
$ result = tld_extract ( ' http://forums.news.cnn.com/ ' );
var_dump ( $ result );
object ( LayerShifter TLDExtract Result) #34 (3) {
[ " subdomain " :" LayerShifter TLDExtract Result " :private]=>
string(11) " forums.news"
[ " hostname " :" LayerShifter TLDExtract Result " :private]=>
string(3) " cnn"
[ " suffix " :" LayerShifter TLDExtract Result " :private]=>
string(3) " com"
}
Result
реализует интерфейс ArrayAccess, поэтому вы можете легко получить доступ к его результату.
var_dump ( $ result [ ' subdomain ' ]);
string ( 11 ) " forums.news "
var_dump ( $ result [ ' hostname ' ]);
string ( 3 ) " cnn "
var_dump ( $ result [ ' suffix ' ]);
string ( 3 ) " com "
Также вы можете просто преобразовать результат в JSON.
var_dump ( $ result -> toJson ());
string ( 54 ) " { " subdomain": " forums.news " ,"hostname":"cnn","suffix":"com"}"
Этот пакет совместим с PSR-1, PSR-2, PSR-4. Если вы заметили нарушения соответствия, отправьте исправление с помощью запроса на включение.
Нет. TLDExtract
использует базу данных из TLDDatabase, созданную из списка общедоступных суффиксов и регулярно обновляемую. Он не выполняет никаких HTTP-запросов для анализа или проверки домена.
Поддерживаются следующие версии PHP.
Через композитор
$ composer require layershifter/tld-extract
Класс LayerShifter TLDExtract Result
имеет несколько полезных методов:
$ extract = new LayerShifter TLDExtract Extract ();
# For domain 'shop.github.com'
$ result = $ extract -> parse ( ' shop.github.com ' );
$ result -> getFullHost (); // will return (string) 'shop.github.com'
$ result -> getRegistrableDomain (); // will return (string) 'github.com'
$ result -> isValidDomain (); // will return (bool) true
$ result -> isIp (); // will return (bool) false
# For IP '192.168.0.1'
$ result = $ extract -> parse ( ' 192.168.0.1 ' );
$ result -> getFullHost (); // will return (string) '192.168.0.1'
$ result -> getRegistrableDomain (); // will return null
$ result -> isValidDomain (); // will return (bool) false
$ result -> isIp (); // will return (bool) true
По умолчанию пакет использует базу данных из пакета TLDDatabase, но вы можете просто переопределить это поведение:
new LayerShifter TLDExtract Extract ( __DIR__ . ' /cache/mydatabase.php ' );
Для получения более подробной информации и о том, как обновлять базу данных, см. TLDDatabase.
По умолчанию после парсинга вы получите объект класса LayerShifter TLDExtract Result
, но иногда вам потребуются собственные методы или дополнительный функционал.
Вы можете создать собственный класс, реализующий LayerShifter TLDExtract ResultInterface
и использовать его в качестве результата анализа.
class CustomResult implements LayerShifter TLDExtract ResultInterface {}
new LayerShifter TLDExtract Extract ( null , CustomResult::class);
Пакет имеет три режима анализа:
Для обеспечения совместимости с пакетом идей Public Suffix List по умолчанию запускается во всех этих режимах, но вы можете легко изменить это поведение:
use LayerShifter TLDExtract Extract ;
new Extract ( null , null , Extract:: MODE_ALLOW_ICANN );
new Extract ( null , null , Extract:: MODE_ALLOW_PRIVATE );
new Extract ( null , null , Extract:: MODE_ALLOW_NOT_EXISTING_SUFFIXES );
new Extract ( null , null , Extract:: MODE_ALLOW_ICANN | Extract:: MODE_ALLOW_PRIVATE );
Пожалуйста, посетите CHANGELOG для получения дополнительной информации о том, что изменилось за последнее время.
$ composer test
Подробную информацию см. в разделах ВКЛАД и ПОВЕДЕНИЕ.
Эта библиотека выпущена под лицензией Apache 2.0. Дополнительную информацию см. в файле лицензии.