Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Domain Klasse zum Aufschlüsseln der Bestandteile

Frage Entwicklung PHP

Mitglied: 70620

70620 (Level 1)

24.07.2009, aktualisiert 10:03 Uhr, 3601 Aufrufe, 7 Kommentare

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
Mitglied: Supermax
25.07.2009 um 09:50 Uhr
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.
Bitte warten ..
Mitglied: Guenni
25.07.2009 um 21:13 Uhr
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.


01.
<?php 
02.
 
03.
function split_url($url){ 
04.
 /* 
05.
 Ein Array mit allen bekannten TLDs. 
06.
 */ 
07.
 $tld_list[]="de"
08.
 $tld_list[]="uk"
09.
 $tld_list[]="at"
10.
 $tld_list[]="com"
11.
 $tld_list[]="co"
12.
 $tld_list[]="eu"
13.
 //u.s.w. 
14.
  
15.
 /* 
16.
 Die übergebene URL wird in einem Array 
17.
 gespeichert 
18.
 */ 
19.
 $url_array=explode(".",$url); 
20.
  
21.
 /* 
22.
 Anzahl der Array-Elemente speichern 
23.
 */ 
24.
 $count=count($url_array); 
25.
  
26.
 /* 
27.
 Da ja nur die TLDs registriert und somit bekannt sind, 
28.
 gehen wir das URL-Array Element für Element von hinten nach 
29.
 vorne durch, und prüfen, ob das Element in dem TLD-Array vorhanden 
30.
 ist. Die Variable $t zählt die gefundenen TLDs. 
31.
 */ 
32.
 $t=1; 
33.
 for($i=$count;$i>=0;$i--){ 
34.
  foreach($tld_list as $tld){ 
35.
	 if($url_array[$i]==$tld){ 
36.
	  echo "Tld $t: ".$url_array[$i]."<br>"
37.
		$t++; 
38.
		/* 
39.
		Immer, wenn eine TLD gefunden wurde, wird ($i-1) in $j gespeichert. 
40.
		Den Wert müssen wir uns "merken", weil wir ab der Position im URL-Array 
41.
		den Rest ausgeben.  
42.
		*/ 
43.
		$j=$i-1; 
44.
45.
46.
47.
 /* 
48.
 Nach den TLDs erfolgt die Ausgabe der Domain 
49.
 */ 
50.
 echo "Domainname: ".$url_array[$j]."<br>"
51.
  
52.
 /* 
53.
 Nach Ausgabe der Domain erfolgt die Ausgabe der Subdomain(s). 
54.
 Dazu wird von $j eine 1 abgezogen, denn ab der Position machen wir 
55.
 weiter. Variable $s zählt die Subdomains. 
56.
 */ 
57.
 $j--; 
58.
 $s=1; 
59.
 for($i=$j;$i>=0;$i--){ 
60.
  echo "Subdomain $s: ".$url_array[$i]."<br>"
61.
	$s++; 
62.
63.
64.
 
65.
$url="sub3.sub2.sub1.domainname.co.uk"
66.
 
67.
echo "URL: $url<br><br>"
68.
 
69.
/* 
70.
Ausgabe der URL-Elemente 
71.
*/ 
72.
split_url($url); 
73.
?>
Gruß
Günni
Bitte warten ..
Mitglied: 70620
27.07.2009 um 09:58 Uhr
Das schaut schonmal sehr gut aus, danke.

Ein Problem dabei dürfte nur die Geschwindigkeit bzw Prozessorauslastung sein, da dieses häufiger aufgeführt werden wird. Diese Lösung hatte ich halb auch schon gebaut, allerdings noch ein wenig langsamer. Nur immer ein Array mit hunderten Einträgen zu durchlaufen kostet extrem Zeit.

Wir lösen das Problem aktuell über die Datenbank indem wir eine größere Tabelle erzeigt haben. Dies klappt noch solange keine große Last auf dem Server ist.

Ich schau mir deine Lösung nochmal genauer an und teste auf Performance.
Danke jedenfalls.
Bitte warten ..
Mitglied: Guenni
28.07.2009 um 21:49 Uhr
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:

01.
<?php 
02.
srand(microtime()*1000000); 
03.
for($i=0;$i<30000;$i++){ 
04.
 $zufall[] = chr(rand(65,91)).chr(rand(65,91)).chr(rand(65,91)); 
05.
06.
$i=0; 
07.
foreach($zufall as $el){ 
08.
 if("AYK"==$el){ 
09.
  echo "Gefunden: ".$zufall[$i]."<br>"
10.
11.
 $i++; 
12.
13.
?>
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
Bitte warten ..
Mitglied: 70620
28.07.2009 um 22:09 Uhr
Das Ganze soll in eine Online-API.
Am Anfang werden wir nur einige 10.000 Aufrufe am Tag haben, aber wer weiss wie das mit der Zeit so wird..

Aktuell muss die Datenbankvariante reichen.. mal schaun was passiert wenn mal richtig Traffic drauf läuft
Bitte warten ..
Mitglied: nxclass
29.07.2009 um 11:38 Uhr
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 !?
Bitte warten ..
Mitglied: 70620
29.07.2009 um 23:59 Uhr
Stimmt guter Einwand...

.de wird wohl am häufigsten Aufgerufen.
Könnte man somit in eine 2. Tabelle auslagern und diese zuerst durchsuchen und nur bei Nicht.-Finden in der zweiten Tabelle suchen.

danke
Bitte warten ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ähnliche Inhalte
Batch & Shell
gelöst PowerShell Domain Join (2)

Frage von Patrick-IT zum Thema Batch & Shell ...

Erkennung und -Abwehr
Spam mit eigener Domain (12)

Frage von NoobOne zum Thema Erkennung und -Abwehr ...

LAN, WAN, Wireless
2. Klasse: Freies WLAN der Bahn wird nach 200 MByte gedrosselt (8)

Link von magicteddy zum Thema LAN, WAN, Wireless ...

Windows Netzwerk
gelöst DNS - Weiterleitung zu DNS-Server in anderer Domain (5)

Frage von Schauer zum Thema Windows Netzwerk ...

Heiß diskutierte Inhalte
Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (17)

Frage von JayyyH zum Thema Switche und Hubs ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

DSL, VDSL
DSL-Signal bewerten (14)

Frage von SarekHL zum Thema DSL, VDSL ...