Keyfi alanların ayıklanması alt etki alanları için PHP Regex

0 Cevap php

Ben keyfi üst düzey uzantıları ile etki alanları için alt etki alanı ve etki kısmını ayıklamak istiyorum.

Böylece:

sub1.domain1.com -> Extract subdomain = sub1, domain = domain1.com

sub2.domain2.co.in -> Extract subdomain = sub2, domain = domain2.co.in

sub3.domain3.co.uk -> Extract subdomain = sub3, domain = domain3.co.uk

sub4.domain4.us -> Extract subdomain = sub4, domain = domain4.us

mydomain.com -> Extract alt alan = "", domain = mydomain.com

mydomain.co.in -> Extract alt alan = "", domain = mydomain.co.in

Ben son 5 karakter onları bir nokta (.) Varsa ben ölçerek kaba kuvvet yöntemini kullanarak bu yapabilirdi co.in / co.uk vs gibi TLD'lerinin nasıl başa çıkılacağı konusunda biraz karıştı, ama bir regex varsa düşünme Bunu yapmanın yolu.


NOT 1: TToni işaret ettiği gibi, belirsizlikler olabilir. Ancak, bazı kısıtlamaları koyacağız:

1) "Alan adı" bölümü (uzantısı olmadan) -> en-az 4 karakter olacak.

2) TLD uzatma parçası (. Com, co.in. Bize, vb) tek bir DOT zorunda kalırsınız ya da iki DOTS varsa, o zaman sondan bir önceki bölüm (alt TLD) atmost 3 karakter olacak.

Ben bu kısıtlamaları regex kullanarak sorun unambigious ve çözülebilir yapacak bir his var.

(Ayrıca, "www." Varsaymak zaten elimden olmuştur).


NOT 2:

Yukarıdaki kısıtlamalar Örnek

sub.dom.in -> domain = "sub.dom.in"

sub.dom1.in -> domain = "dom1.in", alt alan = "alt"

Bu adamcağız gelebilir, ama nedeni - tüm uzantıları tek DOT ya da sondan bir önceki bölüm ya da-max 3 karakter var, benim iç amaçlar için bunu istiyoruz, ve tüm etki onlara göre en az 4 karakter var, VE.


NOT 3: Ben bunun için regex kullanarak hataları olabilir bir his var. Dolayısıyla string arama yolu yapmayı düşünüyorum.

Saygılarımızla,

JP

0 Cevap