Pertimbangkan untuk menggunakan https://github.com/jeremykendall/php-domain-parser sebagai alternatif yang dikelola.
TLDExtract
secara akurat memisahkan gTLD atau ccTLD (domain tingkat atas kode generik atau negara) dari domain terdaftar dan subdomain URL, misalnya pengurai domain. Misalnya, Anda hanya menginginkan bagian 'google' dari 'http://www.google.com'.
Semua orang salah paham. Memisahkan pada '.' dan mengambil 2 elemen terakhir hanya akan berguna jika Anda memikirkan domain sederhana misalnya .com. Pikirkan parsing http://forums.bbc.co.uk misalnya: metode pemisahan naif di atas akan memberi Anda 'co' sebagai domain dan 'uk' sebagai TLD, bukan 'bbc' dan 'co.uk' masing-masing .
TLDExtract
di sisi lain mengetahui seperti apa semua gTLD dan ccTLD dengan mencari gTLD dan ccTLD yang saat ini aktif berdasarkan Daftar Suffix Publik. Jadi, jika diberi URL, ia mengetahui subdomainnya dari domainnya, dan domainnya dari kode negaranya.
$ 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
mengimplementasikan antarmuka ArrayAccess, sehingga Anda dapat dengan mudah mengakses hasilnya.
var_dump ( $ result [ ' subdomain ' ]);
string ( 11 ) " forums.news "
var_dump ( $ result [ ' hostname ' ]);
string ( 3 ) " cnn "
var_dump ( $ result [ ' suffix ' ]);
string ( 3 ) " com "
Anda juga dapat mengonversi hasilnya ke JSON.
var_dump ( $ result -> toJson ());
string ( 54 ) " { " subdomain": " forums.news " ,"hostname":"cnn","suffix":"com"}"
Paket ini sesuai dengan PSR-1, PSR-2, PSR-4. Jika Anda melihat adanya kelalaian dalam kepatuhan, kirimkan patch melalui permintaan tarik.
Tidak. TLDExtract
menggunakan database dari TLDDatabase yang dihasilkan dari Daftar Sufiks Publik dan diperbarui secara berkala. Itu tidak membuat permintaan HTTP apa pun untuk mengurai atau memvalidasi domain.
Versi PHP berikut ini didukung.
Melalui Komposer
$ composer require layershifter/tld-extract
Kelas LayerShifter TLDExtract Result
memiliki beberapa metode yang dapat digunakan:
$ 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
Secara default, paket menggunakan database dari paket TLDDatabase, tetapi Anda dapat mengganti perilaku ini dengan mudah:
new LayerShifter TLDExtract Extract ( __DIR__ . ' /cache/mydatabase.php ' );
Untuk detail lebih lanjut dan cara memperbarui database TLDDatabase.
Secara default setelah parse Anda akan menerima objek kelas LayerShifter TLDExtract Result
, tetapi terkadang Anda memerlukan metode sendiri atau fungsionalitas tambahan.
Anda dapat membuat kelas sendiri yang mengimplementasikan LayerShifter TLDExtract ResultInterface
dan menggunakannya sebagai hasil parse.
class CustomResult implements LayerShifter TLDExtract ResultInterface {}
new LayerShifter TLDExtract Extract ( null , CustomResult::class);
Paket memiliki tiga mode penguraian:
Untuk menjaga kompatibilitas dengan paket ide Daftar Sufiks Publik berjalan di semua mode ini secara default, namun Anda dapat dengan mudah mengubah perilaku ini:
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 );
Silakan lihat CHANGELOG untuk informasi lebih lanjut tentang apa yang berubah baru-baru ini.
$ composer test
Silakan lihat KONTRIBUSI dan PERILAKU untuk rinciannya.
Perpustakaan ini dirilis di bawah lisensi Apache 2.0. Silakan lihat File Lisensi untuk informasi lebih lanjut.