RegExp + interne Verweise => Links u. Bilder

shorty

Erfahrenes Mitglied
Guten morgen,

ich bin gerade dabei einen URL und Bild Überprüfer zu bauen und möchte mir diesbezüglich interne Verweise aus einem bestehenden Text, den ich mir aus der Datenbank hole, herausfiltern.

Ich habe mir bereits einen regulären Ausdruck erstellt, der jedoch nicht gänzlich funktioniert.
Ich finde den Fehler allerdings nicht.

PHP:
$pattern = "/[http\:\/\/|www\.|a-zA-Z0-9|.|\/|\-|_]{1,}[a-zA-Z0-9|\/|-|_]{1,}\.[a-zA-Z0-9]{1,}[?|a-zA-Z0-9|+|=|&]{1,}/";

Ich suche mir mit preg_match_all() die internen Verweise, egal ob Link oder Bild, heraus, jedoch erhalte ich bei der Ausgabe, wenn es sich beispielsweise um einen Link handelt, der Parameter angehängt hat, nur den Link an sich ohne Parameterübergabe. Außerdem: Wenn im Text bestimmte Zahlen vorkommen, werden auch diese herausgefiltert.

Eine andere Frage, wäre noch, wie genau die Funktionsweise von preg_match und preg_match_all ist. Ich habe bereits im PHP Manual nachgeschaut, steige dort aber nicht durch. Ich gebe einen Suchstring an, in dem Fall, einen regulären Ausdruck, der nach eben diesem Ausdruck suchen soll und mir bei Erfolg diesen Ausdruck zurückliefert?

Danke schonmal im Voraus für jegliche Hilfe
 
Um vielleicht besser beim fixen deines Regulären Ausdrucks zu helfen wäre es besser man wüsste auf welche Art von Link man diesen anwendet, sprich: Wie schauen deine Links aus der Datenbank denn genau aus ?



mfg
mr-d
 
Hi,

Sie können wie folgt aussehen:

externe Links:
Code:
<a href="http://www.url.de/datei.php">Name</a>
<a href="http://www.url.de/datei.php?parameter1=wert1">Name2</a>
<a href="http://www.url.de/datei.php?parameter1=wert1&parameter2=wert2">Name3</a>... [usw.]

interne Links:
Code:
<a href="/pfad/zum/Ordner/datei.php">Name4</a>
<a href="/pfad/zum/Ordner/datei.php?parameter1=wert1">Name4</a>
<a href="/pfad/zum/Ordner/datei.php?parameter1=wert1&parameter2=wert2">Name4</a>
[usw.]
<img src="/pfad/zum/Ordner/datei.jpg|gif|[usw.]">

Es können externe oder interne Links sein, oder halt auch Bilder. Die externen Links würde ich auch gerne speichern, jedoch arbeite ich später nur mit den internen Links.

Es müssten Bildlinks und Hreflinks herausgefiltert werden.
 
Ich versuch mich mal an einem Ausdruck:
Code:
(http\:\/\/){0,1} //für ein optionales http:// am Anfang
[\w\-\.](\/[\w\-\.])* //für den Pfad (recht allgemein, deckt dann auch www.bla.de ab)
(\?([\w]\=[.])(\&[\w]\=.*)*){0,1} //für eine optionale Parameterliste am Ende
mit den Delimitern / und /i drumherum (i gibt dann an, dass alles case-insensitiv ist)
\w sind buchstaben, zahlen und der unterstrich

...to be continued/improved ;)
 
Zuletzt bearbeitet:
Mit folgendem regulären Ausdruck erhältst du sämtliche href-Attributwerte der a-Tags:
Code:
/<a\s+[^>]+href="([^"]*)"[^>]*>/i
 
Ich versuch mich mal an einem Ausdruck:
Code:
(http\:\/\/){0,1} //für ein optionales http:// am Anfang
[\w\-\.](\/[\w\-\.])* //für den Pfad (recht allgemein, deckt dann auch www.bla.de ab)
(\?([\w]\=[.])(\&[\w]\=.*)*){0,1} //für eine optionale Parameterliste am Ende
mit den Delimitern / und /i drumherum (i gibt dann an, dass alles case-insensitiv ist)
\w sind buchstaben, zahlen und der unterstrich

...to be continued/improved ;)

Ich habe deinen Codeschnipsel mal getestet und erhalte leider nicht die gewünschte Ausgabe.

Es werde mir keine Verweise ausgegeben, sondern für jede Schleife ein Buchstabe bzw. eine Zahl.
Im Endeffekt sind es 861 Einträge in folgender Ausgabe:

Code:
Nummer URL      Status
1  	     1  	nicht vorhanden
2 	      P 	nicht vorhanden
3 	      H 	nicht vorhanden
4 	      i 	 nicht vorhanden
5 	e 	nicht vorhanden
[...]
 
Mit folgendem regulären Ausdruck erhältst du sämtliche href-Attributwerte der a-Tags:
Code:
/<a\s+[^>]+href="([^"]*)"[^>]*>/i

Hi,

deinen Ausdruck habe ich ebenfalls getestet, allerdings musste ich die " escapen... Erhalte dann jedoch keine einzige Ausgabe irgendwelcher Links bzw. a-Attributwerte.
 
Zurück