-
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)
-
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ß
-
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/
-
Vielen Dank, das brauche ich dann wohl. Es gibt einfach zu viele Möglichkeiten, zu verlinken
-
12.12.11 09:50 #5
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 .-)
-
12.12.11 09:58 #6
- 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 ;-)
-
12.12.11 10:48 #7
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.
-
12.12.11 10:52 #8
- 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 ;-)
-
12.12.11 11:01 #9
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!
-
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.11 19:08 #12
- 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 ;-)
-
Funktioniert bei mir einwandfrei und gibt folgendes aus
Liegt die "url_to_absolute.php" ganz sicher im gleichen Ordner?
-
12.12.11 19:14 #14
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.
-
Auch gar nichts! Keine Fehlermeldung!
Ähnliche Themen
-
Link in String erkennen, klappt nicht ganz!!
Von bigtail im Forum PHPAntworten: 3Letzter Beitrag: 26.10.06, 09:42 -
Nach dem Upload meiner Website (ASP) kann man keine Buttons und Textboxen erkennen.
Von Dondurma im Forum ASPAntworten: 6Letzter Beitrag: 27.09.04, 17:24 -
URL erkennen und als Link ausgeben
Von meilon im Forum PHPAntworten: 3Letzter Beitrag: 21.04.04, 19:04 -
link- und mail- adressen automatisch erkennen
Von Bleem im Forum PHPAntworten: 5Letzter Beitrag: 17.11.02, 15:42 -
Link erkennen
Von Tob im Forum PHPAntworten: 2Letzter Beitrag: 18.06.01, 12:21



2Danke

Zitieren

Login






[PHP][Snippet] Array zu XML konvertieren