Wie bekomme ich den Domain-Namen von der URL?
Wie kann ich die Holen einen domain-Namen aus einer URL-Zeichenfolge?
Beispiele:
+----------------------+------------+
| input | output |
+----------------------+------------+
| www.google.com | google |
| www.mail.yahoo.com | mail.yahoo |
| www.mail.yahoo.co.in | mail.yahoo |
| www.abc.au.uk | abc |
+----------------------+------------+
Verwandte:
InformationsquelleAutor der Frage Chinmay | 2009-02-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich hatte mal zu schreiben, wie eine regex für ein Unternehmen, in dem ich arbeitete. Die Lösung war diese:
Beispiel-regex:
Klappte dies wirklich gut und auch abgestimmt komisch, inoffizielle top-Ebenen wie de.com und Freunde.
Den Kopf:
Der Nachteil dieser Lösung ist natürlich:
InformationsquelleAutor der Antwort pi.
InformationsquelleAutor der Antwort jfs
Extrahieren Sie den Domain-Namen exakt sein kann ziemlich schwierig, vor allem, weil die domain-Endung enthalten kann, 2 Teile (wie .com.au-oder .co.Großbritannien) und die subdomain (das Präfix) kann oder kann nicht da sein. Auflistung aller domain-Endungen ist nicht eine option, da gibt es Hunderte von diesen. EuroDNS.com zum Beispiel listet über 800 domain-Namen-Erweiterungen.
Deshalb schrieb ich eine kurze php-Funktion, die verwendet "parse_url ()" und einige Beobachtungen über domain-Erweiterungen, um genau zu extrahieren Sie die url-Komponenten UND der domain-name. Die Funktion ist wie folgt:
Diese einfache Funktion wird in fast jedem Fall. Es gibt ein paar Ausnahmen, aber diese sind sehr selten.
Nachweisen /testen dieser Funktion können Sie die folgenden verwenden:
Wird die Ausgabe wie folgt für die URL ' s aufgelistet:
Wie Sie sehen können, die domain-Namen und den domain-Namen ohne die Endung konsequent extrahiert, was die URL, die präsentiert wird, um die Funktion.
Ich hoffe, dass dies hilft.
InformationsquelleAutor der Antwort Clinton
Ich weiß nicht alle Bibliotheken, aber die string-Manipulationen von domain-Namen ist einfach genug.
Der schwierige Teil ist zu wissen, wenn der name bei der zweiten oder Dritten Ebene. Für diese benötigen Sie eine Daten-Datei, die Sie pflegen (z.B. für .uk ist nicht immer die Dritte Ebene, einige Organisationen (z.B. bl.uk, jet.uk) gibt es auf der zweiten Ebene).
Den source von Firefox von Mozilla hat eine solche Daten-Datei, überprüfen Sie die Mozilla-Lizenzierung, um zu sehen, wenn man wiederverwenden konnte.
InformationsquelleAutor der Antwort Richard
Gibt es zwei Möglichkeiten
Mit split
Dann nur parse, string
Mit Regex
Hoffe, das hilft
InformationsquelleAutor der Antwort Fizer Khan
Dieser code ist nicht garantiert, um zu arbeiten mit alle URLs und nicht filter diejenigen, die grammatikalisch korrekt sind, aber ungültig, wie " Beispiel.uk'.
Aber es wird den job in den meisten Fällen.
InformationsquelleAutor der Antwort Juan-Pablo Scaletti
Im Grunde, was Sie wollen, ist:
Optional:
Brauchen Sie nicht, um den Bau einer sich ständig verändernden regex als 99% der domains werden passen, wenn Sie einfach nur Optik bei der 2. Letzte Teil des namens:
Wenn es einer von diesen, müssen Sie match-3 Punkte, sonst 2. Einfach. Nun, meine regex-Zauberei ist kein Spiel für die von einigen anderen SO ' ers, so dass der beste Weg, die ich gefunden habe, um dies zu erreichen ist mit einigen Codes, vorausgesetzt, Sie haben bereits abgestreift den Pfad:
Nur der name, wie pro Ihre Frage:
Ich mag diesen Ansatz, weil es wartungsfrei. Es sei denn, Sie wollen, um zu überprüfen, dass es eigentlich eine legitime Domäne, aber das ist irgendwie sinnlos, da Sie wahrscheinlich nur mit Hilfe dieses Prozess-log-Dateien und eine ungültige Domäne nicht finden konnte seinen Weg in dort in den ersten Platz.
Wenn Sie gerne match "inoffizielle" subdomains wie bozo.za.net oder bozo.au.uk, bozo.msf.ru fügen Sie einfach (za|au|msf) in der regex.
Ich würde gerne jemanden sehen, der dies alles mit nur einem regex, ich bin sicher, es ist möglich.
InformationsquelleAutor der Antwort
/[^w{3}\.]([a-zA-Z0-9]([a-zA-Z0-9\-]{0,65}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,6}/gim
Nutzung dieser javascript regex ignoriert www und folgende dot, unter Beibehaltung der Domäne intakt. auch richtig passt kein www und cc tld
InformationsquelleAutor der Antwort stancoffyn
Es ist nicht möglich, ohne die Verwendung einer TLD-Liste zum vergleichen mit Ihren gibt viele Fälle wie http://www.db.de/ oder http://bbc.co.uk/
Aber auch mit, dass Sie nicht haben, Erfolg in jedem Fall, denn der SLD ist wie http://big.uk.com/ oder http://www.uk.com/
Wenn Sie eine vollständige Liste können Sie die öffentliche suffix-Liste:
http://mxr.mozilla.org/mozilla-central/source/netwerk/dns/effective_tld_names.dat?raw=1
Fühlen Sie sich frei, zu erweitern, meine Funktion zu extrahieren, die domain-Namen, nur. Es wird nicht regex verwenden und es ist schnell:
http://www.programmierer-forum.de/domainnamen-ermitteln-t244185.htm#3471878
InformationsquelleAutor der Antwort mgutt
Brauchen Sie eine Liste, welche domain-Präfixe und-Suffixe entfernt werden kann. Zum Beispiel:
Präfixe:
www.
Suffixe:
.com
.co.in
.au.uk
InformationsquelleAutor der Antwort Gumbo
Also wenn man nur einen string und nicht um ein Fenster.Speicherort, den Sie verwenden könnte...
Wie zu verwenden.
InformationsquelleAutor der Antwort Thomas Paris
Für einen bestimmten Zweck habe ich dieses schnelle Python-Funktion gestern. Es gibt domain-URL. Es ist schnell und braucht keine input-Datei mit der Auflistung der Sachen. Allerdings, ich behaupte nicht, es funktioniert in allen Fällen, aber es macht wirklich den job, den ich brauchte für einen einfachen text-mining-script.
Ausgabe sieht wie folgt aus :
http://www.google.co.uk => google.co.uk
http://24.media.tumblr.com/tumblr_m04s34rqh567ij78k_250.gif => tumblr.com
Scheint ziemlich gut zu funktionieren.
Es hat sich jedoch angepasst werden, um eine Domäne entfernen-Erweiterungen bei der Ausgabe, wie Sie wollten.
InformationsquelleAutor der Antwort binnie
Verwenden Sie diese
(.)(.*?)(.)
dann einfach extrahieren den führenden und am Ende Punkte.
Einfach, nicht wahr?
InformationsquelleAutor der Antwort pabben
wie ist das
=((?:(?:(?:http)s?:)?\/\/)?(?:(?:[a-zA-Z0-9]+)\.?)*(?:(?:[a-zA-Z0-9]+))\.[a-zA-Z0-9]{2,3})
(Sie können hinzufügen, "\ /" zum Ende von Muster
wenn Ihr Ziel ist, zu befreien url übergeben wird als Parameter können Sie hinzufügen, die das gleiche Vorzeichen wie der erste char, wie:
=((?:(?:(?:http)s?:)?//)?(?:(?:[a-zA-Z0-9]+).?)*(?:(?:[a-zA-Z0-9]+)).[a-zA-Z0-9]{2,3}/)
und ersetzen mit "/"
Das Ziel dieses Beispiels, um loszuwerden, von jedem domain-Namen ist unabhängig von der form es erscheint.
(D. H., um sicherzustellen url-Parameter nicht incldue domain-Namen zu vermeiden xss-Angriff)
InformationsquelleAutor der Antwort Chaim Klar
InformationsquelleAutor der Antwort Dark Castle
InformationsquelleAutor der Antwort John Foley
Nur für wissen:
InformationsquelleAutor der Antwort GodFather