phpbar.de logo

Mailinglisten-Archive

[php] ungreedy die dritte (vorige mails unrelevant)

[php] ungreedy die dritte (vorige mails unrelevant)

Florian Kugler php_(at)_phpcenter.de
Thu, 14 Jun 2001 19:40:41 +0200


hi,

>habe jetzt den /U ungreedy modifier gefunden. folgendes regexp muesste
>den string $string = "ABaA"
>umwandeln in $string ="0BaA":
>
>$final = preg_replace("/A/Ui","0",$string);
>
>das tut er aber nicht.
>ich bekomme $string = "0B00".
>der Ungreedy-Modifier scheint ueberhaupt nicht zu funken.

das ist auch logisch so, weil preg_replace() in der form wie
du es verwendest alle vorkomnisse des patterns ersetzt. der
U modifier hat damit nichts zu tun. wenn du begrenzen willst,
wie viele vorkomnisse ersetzt werden sollen, dann mußt den 
optionalen 4. paramter von preg_replace() verwenden. siehe
http://www.php.net/manual/en/function.preg-replace.php

außerdem wird in deinem pattern "/A/Ui" durch den i modifier
signalisiert, daß groß/kleinschreibung ignoriert wird. also
matcht dein ausdruck sowohl "A" als auch "a".

mit 
$final = preg_replace("/A/", "O", $string, 1);
sollte es klappen.

florian.



php::bar PHP Wiki   -   Listenarchive