Mailinglisten-Archive |
Moin Yannik, > =((http:|https:)//[^ )\r\n!<"]++)(?!")=i Ich habe das nun mal ausprobiert. Habe auch den Beispieltext ein wenig geändert, um zu sehen, was er findet: ------------------------------------------------------------------------ Hier steht ein http:/www.link.de und hier steht noch ein <a href="http:/www.anderer-link1.de">http:/www.anderer-link2.de</a> ------------------------------------------------------------------------ Mit dem Ausdruck findet er http:/www.link.de und http:/www.anderer-link2.de, was ja auch logisch ist. Ich habe nun ein wenig herumprobiert, ob ich (?!") so abändern kann, dass er auch ein folgendes < ausschliesst. Bin daran leider gescheitert.... :-( > 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). Würde ich gerne machen, wenn ichs kapiert habe... ;-) > Hier steht noch ein bißchen was über Assertions: > http://www.regenechsen.de/phpwcms/index.php?regex_allg_option Dann habe ich mir deinen Link durchgelesen und was von negativer Lookbehind-Assertion gelesen. Und siehe da! Folgende Regex löst mein Problem. =((?<!>)(http:|https:)//[^ )\r\n!<"]++)(?!")=i Nur das von dir angesprochene Problem mit der URL im ALT-Text habe ich damit noch nicht gelöst. Aber das könnte ich versuchen, vorher rauszufiltern. Und ich habe ein Problem, wenn der Link unter einem <br /> steht, dann wird der auch nicht gefunden. Mistmüll! Danke und Gruss, Ralf
php::bar PHP Wiki - Listenarchive