70620
24.07.2009, aktualisiert um 10:03:45 Uhr
4291
7
0
Domain Klasse zum Aufschlüsseln der Bestandteile
Ich suche eine Domainklasse oder auch Funktion, welche mit eine Domain aufschlüsseln kann nach Subdomain, Name und TLD.
Wie oben erwähnt, ich will eine Domain aufschlüsseln. Ich möchte die Subdomain herausfinden können oder auch die TLD.
Im Prinzip nichts schweres, hat man eine Domain wie www.domain.de. Dieser Fall ist der häufigste, aber deswegen sollte man die anderen nicht ignorieren.
- was ist bei 2 subdomains?
- was ist bei einer doppelten (oder dreifachen) TLD?
Hier also einige Beispiele an denen das Ding laufen sollte:
- domain.de
- domain.co.uk
- www.domain.co.uk
- subdomain.domain.co.uk
- sub2.subdomain.domain.co.uk
Ich habe ewig gesucht bisher.. leider erfolglos. Die einzige Sache die ich gefunden habe ist leider nur noch als Artikel online und der Download geht nicht mehr.
Irgendwo muss es sowas geben, ich kann mir nicht vorstellen, dass noch niemand an dem Problem saß.
danke im voraus
Wie oben erwähnt, ich will eine Domain aufschlüsseln. Ich möchte die Subdomain herausfinden können oder auch die TLD.
Im Prinzip nichts schweres, hat man eine Domain wie www.domain.de. Dieser Fall ist der häufigste, aber deswegen sollte man die anderen nicht ignorieren.
- was ist bei 2 subdomains?
- was ist bei einer doppelten (oder dreifachen) TLD?
Hier also einige Beispiele an denen das Ding laufen sollte:
- domain.de
- domain.co.uk
- www.domain.co.uk
- subdomain.domain.co.uk
- sub2.subdomain.domain.co.uk
Ich habe ewig gesucht bisher.. leider erfolglos. Die einzige Sache die ich gefunden habe ist leider nur noch als Artikel online und der Download geht nicht mehr.
Irgendwo muss es sowas geben, ich kann mir nicht vorstellen, dass noch niemand an dem Problem saß.
danke im voraus
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 121237
Url: https://administrator.de/contentid/121237
Ausgedruckt am: 22.11.2024 um 14:11 Uhr
7 Kommentare
Neuester Kommentar
So einfach wird das leider nicht gehen, da das international uneinheitlich geregelt ist, und in einigen Ländern beide Varianten möglich sind, z.B. in Österreich können Domains sowohl direkt unter .at als auch unter .co.at oder .or.at registriert werden (.gv.at und .ac.at sind für Regierungs- und Bildungseinrichtungen reserviert).
Am einfachsten wäre wohl, hier mit einer Liste von regulären Ausdrücken zu arbeiten.
Am einfachsten wäre wohl, hier mit einer Liste von regulären Ausdrücken zu arbeiten.
Hi fiacyberz,
TLDs sind ja registriert und somit festgelegt. Diese würde ich in einem Array ablegen.
Anschließend wird die URL in einem Array gespeichert.
Das URL-Array wird von hinten nach vorne Element für Element mit den Elementen des TLD-Arrays
verglichen. Gibt es eine Übereinstimmung, so ist es eine TLD und wird als solche ausgegeben.
Nach der/den TLD(s) folgt ja der Domainname.
Anschließend werden, falls vorhanden, die Subdomains ausgegeben.
Gruß
Günni
TLDs sind ja registriert und somit festgelegt. Diese würde ich in einem Array ablegen.
Anschließend wird die URL in einem Array gespeichert.
Das URL-Array wird von hinten nach vorne Element für Element mit den Elementen des TLD-Arrays
verglichen. Gibt es eine Übereinstimmung, so ist es eine TLD und wird als solche ausgegeben.
Nach der/den TLD(s) folgt ja der Domainname.
Anschließend werden, falls vorhanden, die Subdomains ausgegeben.
<?php
function split_url($url){
/*
Ein Array mit allen bekannten TLDs.
*/
$tld_list="de";
$tld_list="uk";
$tld_list="at";
$tld_list="com";
$tld_list="co";
$tld_list="eu";
//u.s.w.
/*
Die übergebene URL wird in einem Array
gespeichert
*/
$url_array=explode(".",$url);
/*
Anzahl der Array-Elemente speichern
*/
$count=count($url_array);
/*
Da ja nur die TLDs registriert und somit bekannt sind,
gehen wir das URL-Array Element für Element von hinten nach
vorne durch, und prüfen, ob das Element in dem TLD-Array vorhanden
ist. Die Variable $t zählt die gefundenen TLDs.
*/
$t=1;
for($i=$count;$i>=0;$i--){
foreach($tld_list as $tld){
if($url_array[$i]==$tld){
echo "Tld $t: ".$url_array[$i]."<br>";
$t++;
/*
Immer, wenn eine TLD gefunden wurde, wird ($i-1) in $j gespeichert.
Den Wert müssen wir uns "merken", weil wir ab der Position im URL-Array
den Rest ausgeben.
*/
$j=$i-1;
}
}
}
/*
Nach den TLDs erfolgt die Ausgabe der Domain
*/
echo "Domainname: ".$url_array[$j]."<br>";
/*
Nach Ausgabe der Domain erfolgt die Ausgabe der Subdomain(s).
Dazu wird von $j eine 1 abgezogen, denn ab der Position machen wir
weiter. Variable $s zählt die Subdomains.
*/
$j--;
$s=1;
for($i=$j;$i>=0;$i--){
echo "Subdomain $s: ".$url_array[$i]."<br>";
$s++;
}
}
$url="sub3.sub2.sub1.domainname.co.uk";
echo "URL: $url<br><br>";
/*
Ausgabe der URL-Elemente
*/
split_url($url);
?>
Gruß
Günni
Hi,
wieviel ist denn für dich extrem Zeit?
Nachfolgender Code-Schnipsel erzeugt ein Array mit
30000 zufälligen, dreistelligen Strings.
Anschließend wird das Array nach einer beliebigen
Zeichenkette durchsucht und bei Übereinstimmung wird/werden
das/die gefundene(n) Element(e) ausgegeben:
Nach jedem Klick auf Aktualisieren dauert es ca. 1 Sekunde, bis
das Skript 30000 Array-Elemente via Zufalls-Funktion neu erstellt
und anschließend durchsucht hat.
Jetzt zähl mal, wieviele TLDs du kennst. Das Array, das du damit füllen
kannst, dürfte wohl im Bruchteil einer Sekunde durchsucht sein
Gruß
Günni
wieviel ist denn für dich extrem Zeit?
Nachfolgender Code-Schnipsel erzeugt ein Array mit
30000 zufälligen, dreistelligen Strings.
Anschließend wird das Array nach einer beliebigen
Zeichenkette durchsucht und bei Übereinstimmung wird/werden
das/die gefundene(n) Element(e) ausgegeben:
<?php
srand(microtime()*1000000);
for($i=0;$i<30000;$i++){
$zufall = chr(rand(65,91)).chr(rand(65,91)).chr(rand(65,91));
}
$i=0;
foreach($zufall as $el){
if("AYK"==$el){
echo "Gefunden: ".$zufall[$i]."<br>";
}
$i++;
}
?>
Nach jedem Klick auf Aktualisieren dauert es ca. 1 Sekunde, bis
das Skript 30000 Array-Elemente via Zufalls-Funktion neu erstellt
und anschließend durchsucht hat.
Jetzt zähl mal, wieviele TLDs du kennst. Das Array, das du damit füllen
kannst, dürfte wohl im Bruchteil einer Sekunde durchsucht sein
Gruß
Günni
Wenn Du in der Datenbank noch mitloggst wie oft ein Eintrag gefunden wurde, könntest Du die Reinfolge zum Durchsuchen der Einträge entsprechend festlegen und ggf. noch etwas Geschwindigkeit herausholen.
Ausserdem müsste man doch an der Häufigkeit der 'Domain-Schnipsel' erkennen können ob es sich um eine TLD handelt !?
Ausserdem müsste man doch an der Häufigkeit der 'Domain-Schnipsel' erkennen können ob es sich um eine TLD handelt !?