phpbar.de logo

Mailinglisten-Archive

[php] Re[2]: [php] Regexpression oder Preg

[php] Re[2]: [php] Regexpression oder Preg

Christian Kruse christiankruse_(at)_t-online.de
Sat, 6 Jan 2001 14:58:29 +0100


Hi,
KM> Nabend Christian,
Nabend? ts, geh mal schlafen, es ist hellichter Tag, ich hab mir sagen
lassen, das draussen die sonne scheint *g*

KM> hehe, jau leider.. schefschen is am stunk machen,
KM> weil projekt noch nicht abgeschlossen ist ;-)
Naja, um 20:xx ist bei mir spaetestens schicht, das bringt eh nix
mehr, wenn man ein paar stunden gepennt hat, gehts schneller.

KM> vielen dank !
KM> könntest du mir sagen wo ich ein preg-docu finde ?
php.net/preg_replace
die perldoc ist bei jeder perldistribution dabei, gib einfach in nem
dosprompt

perldoc -q greedy

ein.

KM> könntest du das bitte näher erklären !?
Klar: Angenommen du hast einen String

$txt = "<small>Kleiner</small> <i>Text</i> <u>zum</u>
<big>erlaeutern</big> von <b>greedy</b>";

und du moechtest alle html-tags ersetzen durch <b>. In dem Fall ist
str_replace nicht maechtig genug, da muss preg_replace herhalten ;)
Ein erster Ansatz waere folgendes:

$txt = preg_replace("/<[^\/]*>(.*)<\/.*>/","<b>\\1</b>",$txt);

du wuerdest jetzt feststellen, dass der Ausdruck totalen Schwachsinn
mit deinem String anstellt: der Ausdruck ist greedy. Er geht nicht bis
zur ersten spitzen Klammer, sondern immer bis zur letzten. Das nennt
man "greedy" und wird verursacht durch den *-Quantifier, bzw. auch
durch den +.
Verhindert wird das einfach durch ein ? hinter dem Quantifier.

So, ich muss los,

-- 
mfg,
 Christian                            mailto:CK1_(at)_wwwtech.de
 http://wwwtech.de




php::bar PHP Wiki   -   Listenarchive