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