Zitat:
|
Zitat von kuckuck Code: $this->a = preg_replace('/.*<a[^>]*href="([^"]*).*/is', '\1', $this->getContent());
|
Ich bin grad auch am rumbasteln von einem Regex der Art. Allerdings ist meiner schon etwas komplexer. Er ist bis jetzt zwar für Bilder, lässt sich aber bestimmt einfach für Links benutzen. Er akzeptiert auch, wenn man die Werte nicht in Anführungzeichen setzt, z.B. <img src=http://example.com/image.gif width=100 height=100>, und auch [img]image.gif[/img] (fehlende Lücke). Kurz gesagt, er ist toleranter.
Einen einzigen Fall (den ich bis jetzt entdeckt habe) erkennt er allerdings noch nicht: wenn der src-Parameter ohne Anführungzeichen gesetzt ist und src der letzte Parameter des gesamten Tags ist. Z.B. so:
<img width=100 height=100 src=http://example.com/image.gif>
Code:
~(<img\s+(([^'"> ]*)('[^']*'|"[^"]*"| )?)*src=)('([^']*)'|"([^"]*)"|(\S*)\s+)(\s*(([^'"> ]*)('[^']*'|"[^"]*"| )?)*>)~iU
\\1 ist der Tag bis einschließlich src= (ohne eventuelle Anführungzeichen)
\\6 - \\8 sind der Pfad des Bildes je nachdem, ob er mit einfachen, doppelten oder ohne Anführungzeichen gesetzt wurden
\\9 ist der Rest des Tags ab Ende des Pfades (wieder ohne Anführungzeichen)
Vielleicht kannst du oder jemand anderes ja etwas damit anfangen. Wenn jemand den kleinen Fehler gefixt kriegt oder sonstige Fehler findet/fixt, wäre ich ihm sehr dankbar, wenn er ihn hier posten würde...
KMAssS