Ich möchte die Subdomain und Domain-Teil für Domains mit beliebigen Top-Level-Erweiterungen extrahieren.PHP Regex zum Extrahieren von Subdomains beliebiger Domänen
So:
sub1.domain1.com -> Extract Sub-Domain = sub1, domain = domain1.com
sub2.domain2.co.in -> Extract Sub-Domain = sub2, domain = domain2 .co.in
sub3.domain3.co.uk -> Extract Sub-Domain = sub3, domain = domain3.co.uk
sub4.domain4.us -> Extract Sub-Domain = sub4, domain = domain4 .us
mydomain.com -> Extract Sub-Domain = "", domain = mydomain.com
mydomain.co.in -> Extract Sub-Domain = "", domain = mydomain.co.in
Ich bin etwas verwirrt wie man mit TLDs wie co.in/co.uk etc. umgehen kann. Ich könnte dies auf routinemäßige Art und Weise tun, indem ich zähle, ob die letzten 5 Zeichen einen DOT (.) enthalten, aber denke darüber nach, ob es einen Regex-Weg gibt .
HINWEIS 1: Wie TToni darauf hingewiesen hat, kann es Unklarheiten geben. Allerdings werde ich einige Einschränkungen setzen:
1) Der "Domain name" Teil (ohne die Erweiterung) -> wird mindestens 4 Zeichen sein.
2) Die TLD Verlängerungsteil (.com, co.in, .us, usw.) müssen entweder eine einzelne DOT oder wenn es zwei PUNKTE, dann ist der vorletzte Teil (sub TLD) wird höchstens 3 Zeichen.
Ich habe das Gefühl, dass diese Einschränkungen das Problem mit Regex eindeutig und lösbar machen werden.
(Angenommen, "www." Wurde bereits entfernt).
Anmerkung 2:
Beispiel von oben Einschränkungen
sub.dom.in -> domain = "sub.dom.in"
sub.dom1.in - > domain = "dom1.in", subdomain = "sub"
Das klingt vielleicht buggy, aber der Grund ist - ich will das für meine internen Zwecke, und alle meine Domains haben mindestens 4 Zeichen in ihnen, UND, alle Erweiterungen haben entweder einzelne DOT oder der vorletzte Teil ist maximal 3 Zeichen lang.
HINWEIS 3: Ich habe das Gefühl, ich könnte Fehler machen, indem ich regex dafür verwende. Daher denke ich daran, die Suche nach Zeichenketten zu machen.
Grüßen,
JP
Nicht ganz das gleiche, aber einen Blick auf http://stackoverflow.com/questions/3853338/remove-domain-extension/3853473#3853473 – Gumbo
Ich denke, Sie können das nicht vollständig mit einer Regex lösen, weil Sie Unklarheiten bekommen. Betrachten Sie zum Beispiel "b.ceu". Welches ist die Domain? – TToni
Ich stimme TToni zu. Ich werde meine Frage ändern. Für meinen Zweck nehme ich an, dass der Domainname mindestens 4 Zeichen lang ist. Fügt nach formaler Formulierung noch eine Einschränkung hinzu. –