Domain auslesen mit RegEx

Dieses Thema im Forum "Ruby, php, Perl, Python ..." wurde erstellt von LogicalLimit, 07.09.2006.

  1. #1 LogicalLimit, 07.09.2006
    LogicalLimit

    LogicalLimit Eroberer

    Dabei seit:
    24.05.2004
    Beiträge:
    67
    Zustimmungen:
    0
    Heyho!
    Ich bekomms irgendwie nicht hin... :(
    Habe einige Strings in denen URLs stehen. Von diesen Strings möchte ich nur die Domain haben! Zur Zeit mache ich das so:
    PHP:
    $HostHelp split("http:\/\/.*/"$URL);
          if(
    $Horst[1]<> "")
          {
              
    $Host substr($URL0strpos($URL$HorstHelp[1]));
          }
          else
          {
              
    $Host "http://localhost/";
          }
    1) Wenn jemand ne elegantere Lösung weiß, immer her damit :D
    ansonsten 2) als Beispiel die domain http://domain.de wird nach dem Suchmuster oben nicht erkannt und als domain wird der localhost angegeben.
    Anderes Beispiel: http://www.seite.de/info/index.htm
    Da wird bis zum letzten / eingelesen, also http://www.seite.de/info/!

    Kann mir jemand helfen den RegEx so zu schreiben dass es so funktioniert, wie ich mir das wünsche? :D
    Wär echt nett...

    Gruß, LogicalLimit
     
  2. Anzeige

    Schau dir mal diesen Ratgeber an. Viele Antworten inkl. passender Shell-Befehle!
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. Xanti

    Xanti Mouse Organist

    Dabei seit:
    05.09.2004
    Beiträge:
    1.855
    Zustimmungen:
    0
    Eine Möglichkeit wäre:

    Code:
    ($Host) = $URL=~m!(http://.*?)(/|$)!;
    
    Gruss, Xanti
     
  4. #3 LogicalLimit, 07.09.2006
    LogicalLimit

    LogicalLimit Eroberer

    Dabei seit:
    24.05.2004
    Beiträge:
    67
    Zustimmungen:
    0
    Hi! Danke schonmal für die Antwort, aber da kommt leider n Fehler :(

    Parse error: syntax error, unexpected '=' in /generate.php on line 31

    Gruß, LogicalLimit
     
  5. #4 Xanti, 07.09.2006
    Zuletzt bearbeitet: 07.09.2006
    Xanti

    Xanti Mouse Organist

    Dabei seit:
    05.09.2004
    Beiträge:
    1.855
    Zustimmungen:
    0
    Hmm, also gehts um php. Probier mal

    Code:
    $URL=~m!(http://.*?)(/|$)!; $Host=$1;
    
     
  6. #5 LogicalLimit, 07.09.2006
    LogicalLimit

    LogicalLimit Eroberer

    Dabei seit:
    24.05.2004
    Beiträge:
    67
    Zustimmungen:
    0
    Oh, sorry! Ganz vergessen dazu zu schreiben :D
    Ja, es ist PHP und die beiden neuen codes funktionieren auch nicht :(

    Parse error: syntax error, unexpected '!' in /generate.php on line 32

    Habe auch ehrlich gesagt noch nie etwas von diesen ~s! und ~m! für PHP gelesen... Was sind das für Befehle?

    Gruß, LogicalLimit
     
  7. Xanti

    Xanti Mouse Organist

    Dabei seit:
    05.09.2004
    Beiträge:
    1.855
    Zustimmungen:
    0
    m/ und s/ sind matchen und ersetzen in Perl (den zweiten Befehl hab ich wieder gelöscht, da er nicht richtig funktionierte). Dabei ist das Zeichen nach m oder s frei wählbar, zumindest in Perl. Da es in php wahrscheinlich nicht so ist, probier mal:

    Code:
    $URL=~/(http:\/\/.*?)(\/|$)/; $Host=$1;
    
    Wenn das nicht funktioniert, muss jemand mit php-Kenntnissen einspringen, denn die hab ich nicht :D

    Zumindest den regulären Ausdruck könntest Du verwenden.
     
  8. #7 LogicalLimit, 07.09.2006
    LogicalLimit

    LogicalLimit Eroberer

    Dabei seit:
    24.05.2004
    Beiträge:
    67
    Zustimmungen:
    0
    Hi!
    Hat leider auch nicht geklappt :D
    Aber dennoch vielen Dank für deine Bemühungen! Wenn ich den Ausdruck benutze meldet PHP immer etwas von einem ungültigen Regulären Ausdruck...
    Warning: split() [function.split]: REG_BADRPT in /generate.php on line 21
    Habe allerdings bei meinem Ausdruck noch n Fehler gefunden, aber auch dessen Behebung hat nicht den gewünschten Erfolg gebracht :(

    Nochmals vielen Dank und Gruß,
    LogicalLimit
     
  9. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  10. #8 Wolfgang, 07.09.2006
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo

    Ja php kennt leider nicht so einen lässigen sed-ähnlichen Umgang mit regulären Ausdrücken wie perl.
    Deshalb suchst du eventuell nach eingebauten php-Funktionen wie preg_replace oder ereg_replace.
    Nun bin ich auch jemand, der seine WEB oder Shell Probleme mit Perl statt php löst, deshalb nur diesen Tipp ohne direkte Lösung.

    Ungetestet müsste dabei die Domain ohne www herauskommen.
    Allerdings liefert preg_replace den gesamten String zurück, wenn nicht gematcht wurde.
    Dafür gibt es IMHO in php ereg bzw eregi.

    Ungetestet, da hier kein PHP läuft und ich PHP nur sehr rudimentär behandle weil ich es nicht brauche.
    Die von mir verwendete Regexp-syntax ist perlkompatibel, ob es deine PHP-Version so kennt weiss ich nicht.
    Hoffe es hilft trotzdem weiter, wenn du dein PHP-Handbuch zu Hilfe nimmst.


    Gruß Wolfgang
     
  11. #9 LogicalLimit, 08.09.2006
    LogicalLimit

    LogicalLimit Eroberer

    Dabei seit:
    24.05.2004
    Beiträge:
    67
    Zustimmungen:
    0
    Vielen Dank!
    Hat allerdings nicht so ganz geklappt. Zumal die Seiten nicht immer ein www. beinhalten.
    Aber ich habe jetzt die Lösung gefunden: "http:\/\/[^\/]*\/".
    Damit geht es genau so wie ich es mir vorgestellt habe :)
    Vielen Dank nochmal an alle beteiligten!

    Gruß,
    LogicalLimit
     
Thema:

Domain auslesen mit RegEx

Die Seite wird geladen...

Domain auslesen mit RegEx - Ähnliche Themen

  1. Apache 2.2 Domain u. Sub-Domain auf verschiedenen Ports

    Apache 2.2 Domain u. Sub-Domain auf verschiedenen Ports: Hallo miteinander! Ich knabbere gerade an folgendem Problem: ich möchte, dass Apache auf example.com ausschließlich auf Port 80 antwortet und...
  2. IETF registriert ».onion«-Domainkennung

    IETF registriert ».onion«-Domainkennung: Die Internet Engineering Task Force (IETF) hat die Domainendung ».onion« in einem RFC als Special-Use-Domain akzeptiert. Das gaben die Entwickler...
  3. Reverse Proxy einrichten für mehrere subdomains über Port 80

    Reverse Proxy einrichten für mehrere subdomains über Port 80: Guten Tag zusammen. Ich habe folgendes Problem. Bei mir laufen 2 Apache-Tomcat Services. Einer auf Port 8880 und einer auf Port 8080. Nun habe...
  4. Samba 4 Domain Controller NSLOOKUP für DomainName

    Samba 4 Domain Controller NSLOOKUP für DomainName: Hallo Leute, wir haben hier eine AD Umgebung mit 4 Standorten laufen. Am Standort 1 steht ein Windows 2008 SBS Server. An Standort 2-4 haben...
  5. Samba4 Backup Domain Controller - Windows Primary Domain Controller

    Samba4 Backup Domain Controller - Windows Primary Domain Controller: Hallo Forum, ich hätte eine blöde frage bezüglich Samba4 Domain und WIndows Domaindienst. Also ich muss in der Schule ein Projekt machen, und...