PDA

Bekijk Volledige Versie : [PHP] Backreference gebruiken in array



Dennis
03/01/04, 11:30
Wie weet waarom dit niet werkt:

$var['aaa'] = "AAA";
$var['bbb'] = "BBB";

$inhoud = preg_replace("/\\[([a-zA-Z]+)\\]/i", $var[$1], $inhoud);


Wat ik ook probeer, ik krijg ofwel foutmeldingen (de bekende "parse error,
unexpected T_LNUMBER, expecting T_VARIABLE"), of er wordt met een lege
string vervangen.
Het lijkt er op dat PHP niet in staat is voor iedere replacement de
variabele $var[$1] opnieuw samen te stellen.

Heeft iemand enig idee hoe ik dit wel aan de praat kan krijgen? Het
uiteindelijke doel is natuurlijk om in een tekst iets als [varnaam] te
vervangen met $var['varnaam'].

Bedankt,

Dennis

Daniel Tryba
03/01/04, 13:45
Dennis <dennis@spreekjemoerstaal.nl> wrote:
> Wie weet waarom dit niet werkt:
>
> $var['aaa'] = "AAA";
> $var['bbb'] = "BBB";
>
> $inhoud = preg_replace("/\\[([a-zA-Z]+)\\]/i", $var[$1], $inhoud);
>

Dat kan niet op deze manier, je kan dit wel oplossen met
preg_replace_callback().

--

Daniel Tryba

Dennis
03/01/04, 15:30
Daniel Tryba <news_nl.internet.www.server-side@canopus.nl> wrote in
news:bt6dbn$kkv$2@news.tue.nl:

> Dennis <dennis@spreekjemoerstaal.nl> wrote:
>> Wie weet waarom dit niet werkt:
>>
>> $var['aaa'] = "AAA";
>> $var['bbb'] = "BBB";
>>
>> $inhoud = preg_replace("/\\[([a-zA-Z]+)\\]/i", $var[$1], $inhoud);
>>
>
> Dat kan niet op deze manier, je kan dit wel oplossen met
> preg_replace_callback().
>

Thanks... hiermee is het inderdaad opgelost.

Dennis

John Bokma
04/01/04, 11:15
Dennis wrote:

> Wie weet waarom dit niet werkt:
>
> $var['aaa'] = "AAA";
> $var['bbb'] = "BBB";
>
> $inhoud = preg_replace("/\\[([a-zA-Z]+)\\]/i", $var[$1], $inhoud);


$inhoud =~ s/([a-z]+)/ $var{$1} /gie;

Wat is Perl toch een genot :-D. Ik snap nog steeds niet waarom PHP zo
populair is. Vast een massa onjuiste ideeen. En wie Perl een massa
onleesbare tekens vind moet eens kijken naar dat stukje PHP.

Overigens ik kan niet voorstellen dat je A-Z moet opgeven als je al i
(case insensitive?) opgeeft.

--
Kind regards, http://johnbokma.com/ - added recently: Capturing MSN
John Messenger webcam HOWTO ~ Spamassassin spam filter
cookbook ~ HTTPS protocol with ActiveState Perl

Daniel Tryba
04/01/04, 17:15
John Bokma <postmaster@castleamber.com> wrote:
> Wat is Perl toch een genot :-D. Ik snap nog steeds niet waarom PHP zo
> populair is. Vast een massa onjuiste ideeen. En wie Perl een massa
> onleesbare tekens vind moet eens kijken naar dat stukje PHP.

Ik hoef maar naar een thread in nl.comp.programmeren te kijken en de
lust op perl vergaat me meteen.

BTW wat kan het jou schelen wat mensen gebruiken om hun problemen
opgelost te krijgen? Vanwaar deze verbitterde opmerking?

--

Daniel Tryba

Ronald Klip
04/01/04, 18:00
John Bokma schreef:
> >
> > $inhoud = preg_replace("/\\[([a-zA-Z]+)\\]/i", $var[$1], $inhoud);
>
> En wie Perl een massa
> onleesbare tekens vind moet eens kijken naar dat stukje PHP.

preg_replace gebruikt perl-compatible regular expressions ;)

--
groet, Ronald

John Bokma
04/01/04, 20:15
Daniel Tryba wrote:
> John Bokma <postmaster@castleamber.com> wrote:
>
>>Wat is Perl toch een genot :-D. Ik snap nog steeds niet waarom PHP zo
>>populair is. Vast een massa onjuiste ideeen. En wie Perl een massa
>>onleesbare tekens vind moet eens kijken naar dat stukje PHP.
>
> Ik hoef maar naar een thread in nl.comp.programmeren te kijken en de
> lust op perl vergaat me meteen.

:-D. Toch niet dat stukje formmail code wat voorbij kwam?

> BTW wat kan het jou schelen wat mensen gebruiken om hun problemen
> opgelost te krijgen? Vanwaar deze verbitterde opmerking?

Was niet verbittert bedoelt :-D.

--
Kind regards, http://johnbokma.com/ - added recently: Capturing MSN
John Messenger webcam HOWTO ~ Spamassassin spam filter
cookbook ~ HTTPS protocol with ActiveState Perl

John Bokma
04/01/04, 20:15
Ronald Klip wrote:

> John Bokma schreef:
>
>>>$inhoud = preg_replace("/\\[([a-zA-Z]+)\\]/i", $var[$1], $inhoud);
>>
>>En wie Perl een massa
>>onleesbare tekens vind moet eens kijken naar dat stukje PHP.
>
> preg_replace gebruikt perl-compatible regular expressions ;)

The Perl way:

$inhoud =~ s/\[([a-z]+)\]/ $var[$1] /gei;


--
Kind regards, http://johnbokma.com/ - added recently: Capturing MSN
John Messenger webcam HOWTO ~ Spamassassin spam filter
cookbook ~ HTTPS protocol with ActiveState Perl