phpbar.de logo

Mailinglisten-Archive

[php] pcre problem

[php] pcre problem

Andreas Braukmann braukmann_(at)_tse-online.de
Tue, 15 Feb 2000 16:59:08 +0100


Hi,

On Tue, Feb 15, 2000 at 04:30:04PM +0100, Björn Schotte wrote:
> 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?

 ... das ist nur ein Schuss aus der Huefte, ... aber koennte
 es sein, dass

> > preg_match('=^(.*)<a(.*)href\="?(\S+)"(.*)>(.*)</a>(.*)$=msi',$zeile,$txt)
                                          ^^^^^
der markierte (.*) Teilausdruck 'greedy' matched und sich 
eben dadurch die Zeichenkette '><img src="/ein/bild.gif">' 
unter den Nagel reisst, anstatt beim ersten '>' anzuhalten?
Was waere also (ungetestet!) mit einem Versuch 

preg_match('=^(.*)<a(.*)href\="?(\S+)"([^>]*)>(.*)</a>(.*)$=msi',$zeile,$txt)
                                      ^^^^^^^
Der Teilausdruck '([^>]*)' greift sich alle Zeichen, bis ihm das 
erste '>' unterkommt, ... dann _muss_ er aufhoeren.
 
> Ausprobieren?
... Fachliteratur zum Thema lesen?

"Regulaere Ausdruecke" - Jeffrey E.F. Friedl -  LO'Reilly - 
deutsche Uebersetzung von Andreas Karrer
ISBN 3-930673-62-2

Gerade 'regexp'-Einsteigern koennte ein 'man regexp' oder 'man perlre'
doch ein wenig zu kompakt ausfallen.

Meiner Erfahrung nach hilft einem reines 'Spielen' und 'Ausprobieren'
nicht weiter, ... man muss das Konzept 'regulaere Ausdruecke' 
wirklich verstehen, wenn man es effektiv anwenden moechte.

-Andreas



-- 
: Anti-Spam Petition:     http://www.politik-digital.de/spam/          :
: PGP-Key:                http://www.tse-online.de/~ab/public-key      :
: Key fingerprint:  12 13 EF BC 22 DD F4 B6  3C 25 C9 06 DC D3 45 9B   :


php::bar PHP Wiki   -   Listenarchive