phpbar.de logo

Mailinglisten-Archive

[php] Rekursive =?ISO-8859-1?Q?Regul=E4re_Ausdr=FCcke?=

[php] Rekursive Reguläre Ausdrücke

Christian Hamacher php_(at)_phpcenter.de
Wed, 17 Jul 2002 18:33:38 +0200


Hi Nikolai,

Nikolai Onken schrieb:
[schnipp]
 > Mein Problem ist, das ich diesen Ausdruck umschreiben will, so dass er
 > z.B.
 > <gcms:loop>Hallo<gcms:loop>huhu</gcms:loop></gcms:loop> matchen kann.
 > Und genau da komm ich nicht mehr weiter - wenn es überhaupt möglich ist.
 > Ich kann ja nicht einfach
 > °<gcms:loop>(((?>[^<gcms:loop>])|(?R))*)</gcms:loop> schreiben.

Das Problem ist [^<gcms:loop>] das entspricht nicht dem was du suchst.

Schau dir das mal an, ist zwar noch nicht perfekt aber kommt der Sache 
schon nah.
<?php
$content = '<gcms:loop>Mein Problem ist,</gcms:loop> das ich
diesen Ausdruck umschreiben will, so dass er z.B.
<gcms:loop>Hallo<gcms:loop>huhu</gcms:loop></gcms:loop> matchen kann.
Und genau da komm ich nicht mehr weiter - wenn es überhaupt möglich ist.
Ich kann ja nicht einfach';

preg_match_all ('~<gcms:loop>(((?>[^<>]+)|(?R))*)</gcms:loop>~U', 
$content, $treffer);

print_r($treffer);
?>

[^<>]+ sucht mindestens ein Zeichen was nicht < oder > ist.
Das kann natürlich nur gehen solange Zwischen <gcms:loop>  und 
</gcms:loop>  kein < oder > vorkommen kann.

Ich schau mal ob mir noch was einfällt.

Gruß
   Christian


php::bar PHP Wiki   -   Listenarchive