Top-Themen

Aktuelle Themen (A bis Z)

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

Frage Entwicklung PHP

Domain Klasse zum Aufschlüsseln der Bestandteile

Mitglied: 70620

70620 (Level 1)

24.07.2009, aktualisiert 10:03 Uhr, 3638 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 ..
Ähnliche Inhalte
JavaScript
JQuery, neue Klasse an vorhandene Klasse hängen.
gelöst Frage von d4shoerncheNJavaScript4 Kommentare

Guten Tag, ich erstelle gerade eine neue Webpräsenz für unseren Verein und setze dort Joomla ein. In Joomla bekommt ...

C und C++
CoMarshalInterface Klasse nicht registriert
Frage von runner-ralfC und C++2 Kommentare

Hallo alle zusammen, Ich habe ein Programm das beim Starten folgenden Fehler ausspuckt. Schwerwiegender interner Fehler: CoMarshalInterface Klasse nicht ...

DNS
Komplexe DNS-Kette im Unternehmen aufschlüsseln . vom Client aus möglich ?
Frage von donnyS73lbDNS9 Kommentare

Hallo zusammen, wir haben hier eine sehr komplexe DNS-Kette im Unternehmen. Gibt es eine Möglichkeit, dass ich von meinem ...

Python
Methode in einer Klasse braucht self
Frage von YanmaiPython1 Kommentar

Hallo ihr Administratoren, ich bin gerade dabei, Python zu lernen. Dabei habe ich ein Modul, was 2 Klassen beinhaltet. ...

Neue Wissensbeiträge
Linux

Meltdown und Spectre: Linux Update

Information von Frank vor 4 StundenLinux

Meltdown (Variante 3 des Prozessorfehlers) Der Kernel 4.14.13 mit den Page-Table-Isolation-Code (PTI) ist nun für Fedora freigegeben worden. Er ...

Tipps & Tricks

Solutio Charly Updater Fehlermeldung: Das Abgleichen der Dateien in -Pfad- mit dem Datenobject ist fehlgeschlagen

Tipp von StefanKittel vor 22 StundenTipps & Tricks

Hallo, hier einmal als Tipp für alle unter Euch die mit der Zahnarztabrechnungssoftware Charly von Solutio zu tun haben. ...

Sicherheit

Meltdown und Spectre: Wir brauchen eine "Abwrackprämie", die die CPU-Hersteller bezahlen

Information von Frank vor 22 StundenSicherheit12 Kommentare

Zum aktuellen Thema Meltdown und Spectre: Ich wünsche mir von den CPU-Herstellern wie Intel, AMD oder ARM eine Art ...

Sicherheit

Meltdown und Spectre: Realitätscheck

Information von Frank vor 23 StundenSicherheit9 Kommentare

Die unangenehme Realität Der Prozessorfehler mit seinen Varianten Meltdown und Spectre ist seit Juni 2017 bekannt. Trotzdem sind immer ...

Heiß diskutierte Inhalte
Netzwerkgrundlagen
Welches Modem für VDSL 50000 der T-Com
gelöst Frage von Windows10GegnerNetzwerkgrundlagen21 Kommentare

Hallo, ein Kollege von mir will sich VDSL50000 von der T-Com holen, um daran einen Server zu betreiben. Ich ...

Sicherheit
Meltdown und Spectre: Die machen uns alle was vor
Information von FrankSicherheit18 Kommentare

Aktuell sieht es in den Medien so aus, als hätten die Hersteller wie Intel, Microsoft und Co den aktuellen ...

Ubuntu
Ubuntu - Starter für nicht vertrauenswürdige Anwendungen
Frage von adm2015Ubuntu17 Kommentare

Hallo zusammen, Ich verwende derzeit die Ubuntu Versionen 17.10 bzw. im Test 18.04. Ich habe mehrere .desktop Dateien in ...

Netzwerke
Packet loss bei "InternetLeitungsvollauslastung"
gelöst Frage von Freak-On-SiliconNetzwerke17 Kommentare

Servus; Ja der Titel klingt komisch, is aber so. Wenn die Internetleitung voll ausgelastet ist, hab ich extreme packet ...