Ich habe eine ziemlich einfache Funktion, um die Domain einer URL zu erhalten. Was ich nach der zurückgegebenen Zeichenfolge suche, ist nur der Domainname (nicht 'www.beispiel.com', sondern 'beispiel.com').RegEx Ergebnis unterscheidet zwischen einem 6 Zeichen und einem 7 (+) Zeichenbereich
Ich teste die Funktion und es scheint in Ordnung, außer für Domänen, die unter 7 Zeichen lang sind.
Hier sind meine Probe Ein- und Ausgänge:
IN: http://www.example.com/asdf.html
- OUT: example.com
IN: http://www.1234.com/asdf
- OUT: 1234.com
IN: http://www.exampl.com/asdf
- OUT www.exampl.com
Das Ding, das mich abstößt, ist die letzte Eingabe/Ausgabe. Ich verstehe nicht, warum die Funktion das www.
zurückgibt, wenn eine Domäne weniger als 7 Zeichen ist. Hier
ist der Code:
function getDomain($url = STR_EMP) {
preg_match("/[a-zA-Z0-9\-\_]{1,63}\.[a-z\.]{2,10}$/", parse_url($url, PHP_URL_HOST), $_domain_tld);
return $_domain_tld[0];
}
$url1 = "http://www.example.com/asdf.html"; // example.com
$url2 = "http://www.1234.com/asdf"; //1234.com
$url3 = "http://www.exampl.com/asdf"; // www.exampl.com
var_dump(getDomain($url1), getDomain($url2), getDomain($url3));
(Ausgang)
string(11) "example.com"
string(8) "1234.com"
string(14) "www.exampl.com"
ich kein Profi mit RegEx bin, aber es scheint, die mit 6 Buchstaben Domain passt {1,63} Kriterien im Ausdruck. Kann jemand erklären, warum die 6-stellige www.exampl.com
Domain die www.
zurückgibt?
Gibt es eine RegEx, mit der ich umgehen kann, um das für kürzere URLs zu verhindern?
Danke in fortgeschrittenem.
UPDATE:
Kriterien für die Domäne:
some.site.com
sollte eine Ausgabe site.com
a.nother.site.com
sollte auch Ausgangs site.com
Zuerst die Regex korrekt entkommen –
Was sind Ihre Kriterien für Ihre erwartete Ausgabe? Wenn die Eingabe "some.site.com" ist, möchten Sie nur 'site.com' oder' some.site.com' (sollte nur 'www.'s entfernt werden)? Was ist mit 'a.longer.one.com'? Möchtest du 'one.com'? 'longer.one.com'? – Chris
Ich möchte 'site.com' und' one.com', sorry. – TJB4rn3s