Mailinglisten-Archive |
Hi Pascal, * Pascal Schult wrote: > preg_match('=^(.*)<a(.*)href\="?(\S+)"(.*)>(.*)</a>(.*)$=msi',$zeile,$txt) Nunja, die Zeile stammt eigentlich von Kris Köhntopp, der mir damals (Mai? Juni?) bei einem Problem weiter- geholfen hat. > 1 Frage: wozu schreibst du einmal ´"?´ und danach nur ´"´, ohne ´?´ ? > du willst doch auch urls finden, die nicht in ´"´ stehen. Nö, will ich nicht, weil das kein korrektes HTML ist. URLs stehen innerhalb von "", also <a href="http://bla.furz/"> Obige Regexp hat aber offensichtlich noch ein Problem; nämlich wenn folgende Konstellation zu Tage tritt: <a href="http://bla.furz.de/"><img src="/ein/bild.gif"></a> Dann kommt sie durcheinander. Weiß jemand, warum? > 2 Frage: wieso erfordert preg_* , daß man für solch eine suche den > Anfang ´^´ und das Ende ´$´ angibt? was würde passieren, wenn man es > nicht macht? Ausprobieren? > ungewohnterweise scheinen die '='-zeichen ja als delimiter zu gelten > oder sie bewirken irgendeinen loop mit dem modifier ´m´...? > das steht ja scheinbar alles in zusammenhang mit dem modifier ´m > (PCRE_MULTILINE)´. i = case insensitive m = über mehrere Zeilen (\n) hinweggehend ($zeile ist bei mir der Inhalt einer kompletten HTML-Datei) s = bei dot meta charactern werden auch Newlines erfaßt, falls z.B. sich ein Anker über mehrere Zeilen erstreckt, z.B. <a href="http://www.bla.de/"> blubberdiblubb </a> -- Björn Schotte Fon: 0931 / 78 43 79 2 <http://www.php-center.de/> Fax: 0931 / 78 43 79 5 <http://www.web-cards.de/>
php::bar PHP Wiki - Listenarchive