Mit RegEx erkennen, ob Link relativ zu Website ist

kourty

Mitglied
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!
 
Zuletzt bearbeitet:
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ß
 
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 .-)
 
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.
 
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? ;)
 
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.
 
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!
 
Zurück