phpbar.de logo

Mailinglisten-Archive

[php] pcre problem

[php] pcre problem

=?iso-8859-1?Q?Bj=F6rn_Schotte?= bjoern_(at)_baer.mayn.de
Tue, 15 Feb 2000 16:30:04 +0100


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