Mailinglisten-Archive |
Oliver Kummerow wrote:
>
> Hallo
>
> wenn es denn geht, soll ein captured subpattern (gefangenes
> Untermuster <g>) in preg_replace als Index eines Array dienen und
> zwar für das "Hash"en einer Ersetzung aus diesem Array. Das
> scheint aber nicht hinzuhauen. Ist da irgendeine special Syntax
> fällig?
>
> zur Verdtl.:
>
> $data = preg_replace
> (
> "~
> limitleft\#(\d+)\".*limitright
> ~Uxis",
> " (".$this->index[\\1].") ",
> $data
> );
Backreferenzes können nur innerhalb des Regulären Ausdruck verwendet
werden. Anders als in Perl wird nicht automatisch eine Variable $1
erzeugt.
Mit einem zweistufigen Vorgehen solltest Du das Problem lösen können.
preg_match_all() greift alle Vorkommen und preg_replace_all() oder
str_replace() macht die Ersetzungen.
Ulf
php::bar PHP Wiki - Listenarchive