Mailinglisten-Archive |
Ralf Eggert wrote: > Hallo Yannik, > > habe noch eine Idee. Wäre es möglich, dies so umzuschreiben, dass er > alle Links findet, die NICHT von " und " bzw. von > und < umschlossen sind? > > preg_match_all( > '=((http:|https:)\/\/[^ )\r\n!<"]+)=i', $htmlBody, $linkList > ); > > Hast du da eine Idee? Habe das Prinzip der "negative lookahead > assertion" leider noch nicht ganz geblickt. Ahso ja, das war sogar ein Denkfehler von mir. Ich wollte nach urls IM <a>-tag suchen: <a href="...">http://...</a>. Wenig hilfreich natürlich. Mit Hilfe der negative look ahead assertion könnte man deine Idee so umsetzen: =((http:|https:)//[^ )\r\n!<"]++)(?!")=i Damit findest du links hinter denen kein " folgt. Damit hast du schon eine recht hohe Trefferquote. Wenn in deinem Quelltext " auch brav durch " ersetzt worden sind, dann gibt es nurnoch seltene ausnahmen, die dir Probleme machen könnten (zum Beispiel <img src="..." alt="Dieses Bild habe ich auf http://example.com heruntergeladen" /> ). Sowas könntest du noch verhindern in dem du dein regex dazu ausbaust zu erkennen, ob es sich in einem tag befindet (vor dem nächsten > muss ein < kommen oder es darf kein > mehr kommen). Hier steht noch ein bißchen was über Assertions: http://www.regenechsen.de/phpwcms/index.php?regex_allg_option > > Danke und Gruss, > > Ralf Yannik
php::bar PHP Wiki - Listenarchive