유지 관리되는 대안으로 https://github.com/jeremykendall/php-domain-parser를 사용하는 것을 고려하십시오.
TLDExtract
등록된 도메인 및 URL의 하위 도메인(예: 도메인 파서)에서 gTLD 또는 ccTLD(일반 또는 국가 코드 최상위 도메인)를 정확하게 분리합니다. 예를 들어, 'http://www.google.com'의 'google' 부분만 원한다고 가정해 보겠습니다.
모두가 이것을 잘못 알고 있습니다. '.'에서 분할 그리고 마지막 2개 요소를 취하는 것은 간단한 예를 들어 .com 도메인을 생각하는 경우에만 큰 도움이 됩니다. 예를 들어 http://forums.bbc.co.uk를 구문 분석한다고 생각해보세요. 위의 순진한 분할 방법은 각각 'bbc'와 'co.uk' 대신 도메인으로 'co'를, TLD로 'uk'를 제공합니다. .
반면 TLDExtract
공개 접미사 목록에 따라 현재 존재하는 TLD를 검색하여 모든 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);
패키지에는 세 가지 구문 분석 모드가 있습니다.
공개 접미사 목록과의 호환성을 유지하기 위해 아이디어 패키지는 기본적으로 이러한 모든 모드에서 실행되지만 이 동작을 쉽게 변경할 수 있습니다.
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 라이센스에 따라 릴리스되었습니다. 자세한 내용은 라이센스 파일을 참조하십시오.