tutorials.de Buch-Aktion 05/2012
Seite 1 von 2 12 LetzteLetzte
ERLEDIGT
JA
ANTWORTEN
21
ZUGRIFFE
565
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    kourty kourty ist offline Mitglied Bronze
    Registriert seit
    Apr 2011
    Beiträge
    40
    Hallo liebe Community,

    ich möchte gerne mit meinem Script alle Links aus einer Website lesen. Da manche der Links relativ zur Website sind, bsp. "/home.php", muss ich dies erkennen und die Domain davor setzen. Hat jemand eine Idee für einen RegEx, der dies erkennt? Momentan mache ich es so, dass geguckt wird, ob ein Slash am Anfang des Links steht, ein relativer Link kann ja aber leider auch so "home.php" aussehen.

    Vielen Dank für alle Antworten!
    Geändert von kourty (12.12.11 um 11:40 Uhr)
     

  2. #2
    Avatar von Lime
    Lime Lime ist gerade online frisch fruchtig
    Registriert seit
    Jul 2011
    Beiträge
    373
    Ich hab mit sowas noch nie zu tun gehabt, aber ich würde folgendes machen:

    1. Schauen ob überhaupt ein Slash im Link ist:
    - Wenn nicht, dann ist es automatisch sowas wie "home.php"
    - Wenn schon, dann weiter mit 2:

    2. Schauen, ob der Link einem Schema gleich kommt...
    - z.B.: http://
    - z.B.: www.
    - z.B.: .tld

    Gruß
     

  3. #3
    CPoly CPoly ist offline Mitglied Weizenbier
    tutorials.de Premium-User
    Registriert seit
    Sep 2009
    Beiträge
    2.445
    Ein regulärer Ausdruck alleine wird dir nicht helfen. Du musst auch Pfade wie "../foo.php", "../../foo.php", "foo.php", "/foo.php", "./foo.php", etc. richtig auflösen.

    Dafür gibt es Bibliotheken

    http://stackoverflow.com/questions/1...a-relative-url
    http://sourceforge.net/projects/absoluteurl/
     

  4. #4
    kourty kourty ist offline Mitglied Bronze
    Registriert seit
    Apr 2011
    Beiträge
    40
    Vielen Dank, das brauche ich dann wohl. Es gibt einfach zu viele Möglichkeiten, zu verlinken
     

  5. #5
    Avatar von Anna Bolika
    Anna Bolika Anna Bolika ist offline Mitglied Silber
    Registriert seit
    Jan 2011
    Beiträge
    75
    Naja, mit einem Regex würde ich es nicht machen. Aber so viele Möglichkeiten gibts dann auch nicht. Wenn es dir wirklich wichtig ist, dann hast du im Prinzip folgende Möglichkeiten:

    http://example.com/xyz.php
    /xyz.php
    xyz.php
    ./xyz.php
    ../xyz.php

    Das wars doch aber dann schon. Dann nimmt man halt 5 Regex und sitzt ne halbe Stunde länger an der Lösung .-)
     

  6. #6
    Avatar von saftmeister
    saftmeister saftmeister ist offline Der Saft sei mit dir
    tutorials.de Premium-User
    Registriert seit
    May 2006
    Ort
    There is no place like 127.0.0.1
    Beiträge
    3.521
    Und was ist mit ../../xyz.php? Oder ../../../xyz.php? Oder http://www.abc.de/foo/../baz.php?
    Geändert von saftmeister (12.12.11 um 09:58 Uhr) Grund: bbcode hat die URL vernichtet
     
    Grüße
    --
    Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)

  7. #7
    Avatar von Anna Bolika
    Anna Bolika Anna Bolika ist offline Mitglied Silber
    Registriert seit
    Jan 2011
    Beiträge
    75
    Naja, saftmeister, Denken ist auch bei meinen Antworten noch erlaubt

    Ich würde vielleicht erst mal damit anfangen, einfach nur zu scannen, welche Art von Schreibweisen wirklich auf der entsprechenden Webseite auftauchen.

    Wie ich den kourty verstanden habe, handelt es sich um eine einmalige Aufgabe. Könnte ja sein, dass die Sache viel unkomplizierter ist, als wir es annehmen.

    Wenn ich vor diesem Problem stehen würde, würde ich jedenfalls jetzt nicht aufgeben, nur weil es eine größere Anzahl von Möglichkeiten geben würde. Denn die Alternative wäre ja evtl. alles selbst durchzuschauen.
    kourty bedankt sich. 

  8. #8
    Avatar von saftmeister
    saftmeister saftmeister ist offline Der Saft sei mit dir
    tutorials.de Premium-User
    Registriert seit
    May 2006
    Ort
    There is no place like 127.0.0.1
    Beiträge
    3.521
    Natürlich ist denken nicht verboten. Ich würde es evtl. komplett ohne regex machen. strstr() mit http und https könnten schon ausreichend sein, um herauszufinden, ob es ein relativer oder absoluter Link ist. Das ist natürlich nur die einfachste Variante. Wir können aber leider nicht davon ausgehen, das es einfach einfach ist. Daher ist die Idee mit der Library keine so schlechte... Denn warum das Rad neu erfinden?
     
    Grüße
    --
    Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)

  9. #9
    Avatar von Anna Bolika
    Anna Bolika Anna Bolika ist offline Mitglied Silber
    Registriert seit
    Jan 2011
    Beiträge
    75
    Klar würdest du es mit strstr() machen Langsam kennt man sich doch hier. Hattest du nicht mal irgendwo geschrieben, dass Regex nicht so dein Ding ist

    Das mit der Libary sehe ich auch so wie du. Habe ich wohl überlesen, bevor ich antwortete.
     

  10. #10
    kourty kourty ist offline Mitglied Bronze
    Registriert seit
    Apr 2011
    Beiträge
    40
    Die Sache ist leider nicht so unkompliziert Die Links sind nicht auf wenige Websites begrenzt, sodass ich das nicht per Hand durchgucken kann. Außerdem ist bei diesem Projekt die Performance sehr wichtig, sodass ich gehofft habe, man könnte die Sache mit einem RegEx oder einer Funktion lösen, was erfahrungsgemäß besser performt als eine Library ist. Aber ich werde jetzt wohl die Library nehmen müssen, Thema ist erledigt!
     

  11. #11
    kourty kourty ist offline Mitglied Bronze
    Registriert seit
    Apr 2011
    Beiträge
    40
    Ich habe leider ein Problem mit der Library. Ich habe nun schon mehrere Versionen von absoluteURL installiert, mit keinem der Versionen klappt aber dieses folgende einfache Skript:

    Code :
    1
    2
    3
    4
    5
    
    <?php
    include('url_to_absolute.php');
    $link = url_to_absolute("http://www.test.de","/home.php");
    echo $link;
    ?>

    Das File wird richtig includiert, es gibt aber auch keine Fehlermeldung, einfach gar nichts! Ich probiere nun schon an mehreren Stunden herum, es passiert aber nichts!
     

  12. #12
    Avatar von saftmeister
    saftmeister saftmeister ist offline Der Saft sei mit dir
    tutorials.de Premium-User
    Registriert seit
    May 2006
    Ort
    There is no place like 127.0.0.1
    Beiträge
    3.521
    Was macht dieser Code, wenn du ihn ausführst:

    Code php:
    1
    2
    3
    4
    5
    6
    7
    
    <?php
    ini_set('display_errors', 1);
    error_reporting(E_ALL|E_STRICT);
    include('url_to_absolute.php');
    $link = url_to_absolute("http://www.test.de","/home.php");
    echo $link;
    ?>
     
    Grüße
    --
    Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)

  13. #13
    CPoly CPoly ist offline Mitglied Weizenbier
    tutorials.de Premium-User
    Registriert seit
    Sep 2009
    Beiträge
    2.445
    Funktioniert bei mir einwandfrei und gibt folgendes aus
    Liegt die "url_to_absolute.php" ganz sicher im gleichen Ordner?
     

  14. #14
    Avatar von Anna Bolika
    Anna Bolika Anna Bolika ist offline Mitglied Silber
    Registriert seit
    Jan 2011
    Beiträge
    75
    Setz doch mal error_reporing (E_ALL | E_STRICT)

    Wenn das nichts hilft, würde ich mal nach einen @-Zeichen vor Funktionsaufrufen suchen.

    Mich hat auch mal so ein Problem fast verrückt gemacht. Schuld war dann irgendein Fehler innerhalb einer Funktion, die von einer Funktion, einer Funktion, einer Funktion und einer Funktion aufgerufen wurde, der aber ein paar Stellen vorher durch das @ unterdrückt wurde.

    Mich würde aber auch mal interessieren, was denn der Hintergrund für dein Anliegen ist. Vielleicht kann man irgendwas an den Rahmenbedingungen ändern.
     

  15. #15
    kourty kourty ist offline Mitglied Bronze
    Registriert seit
    Apr 2011
    Beiträge
    40
    Auch gar nichts! Keine Fehlermeldung!
     

Ähnliche Themen

  1. Antworten: 3
    Letzter Beitrag: 26.10.06, 09:42
  2. Antworten: 6
    Letzter Beitrag: 27.09.04, 17:24
  3. URL erkennen und als Link ausgeben
    Von meilon im Forum PHP
    Antworten: 3
    Letzter Beitrag: 21.04.04, 19:04
  4. Antworten: 5
    Letzter Beitrag: 17.11.02, 15:42
  5. Link erkennen
    Von Tob im Forum PHP
    Antworten: 2
    Letzter Beitrag: 18.06.01, 12:21

Stichworte