[php] variable in variable deel 2

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ik heb de oplossing gevonden voor het probleem in dit topic: [rml][ php] variable in een variable[/rml]

er werdt mij verteld om een simpele template engine te maken, maar deze oplossing is veel simpeler. en hier was ik naar op zoek.

beetje jammer dat topics zo snel een slotje krijgen, vandaar dat ik er nu ff een nieuw topic voor open, want misschien dat anderen er nog wat aan hebben.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
//extern language file
$dictonary['plaatsmsg']="je hebt \$aantal_messages nieuw(e) bericht(en)"; 
//extern language file



//een variable die pas later in het script wordt gedefineerd.
$aantal_messages = "10"; 

//Evaluate a string as PHP code
$parse = $dictonary['plaatsmsg'];
eval("\$parse = \"$parse \";");

//output
echo $dictonary['plaatsmsg'];
?>

Acties:
  • 0 Henk 'm!

Verwijderd

En toch blijft dusty's methode mooier, beter en veiliger...

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Verwijderd schreef op 07 February 2003 @ 15:33:
En toch blijft dusty's methode mooier, beter en veiliger...
define mooier, beter en veiliger??

dit is toch veel simpeler.

Acties:
  • 0 Henk 'm!

Verwijderd

Verwijderd schreef op 07 February 2003 @ 15:39:
[...]

define mooier, beter en veiliger??

dit is toch veel simpeler.
Het is beter te onderhouden (beter)... je eval is weg (veiliger) en de kans is gewoon een stuk kleiner dat er iets misgaat.. en het is mooier... zeg nou zelf... dit stukje heeft exact het zelfde resultaat als jouw stukje code:

PHP:
1
2
3
4
5
6
7
<?
$dictonary['plaatsmsg'] = "U heeft %AANTAL% nieuwe berichten";

$aantal_berichten = 10;
$dictonary['plaatsmsg'] = str_replace("%AANTAL%", $aantal_berichten, $dictonary['plaatsmsg']);
echo $dictonary['plaatsmsg'];
?>

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Verwijderd schreef op 07 februari 2003 @ 15:46:
[...]


Het is beter te onderhouden (beter)... je eval is weg (veiliger) en de kans is gewoon een stuk kleiner dat er iets misgaat.. en het is mooier... zeg nou zelf... dit stukje heeft exact het zelfde resultaat als jouw stukje code:

PHP:
1
2
3
4
5
6
7
<?
$dictonary['plaatsmsg'] = "U heeft %AANTAL% nieuwe berichten";

$aantal_berichten = 10;
$dictonary['plaatsmsg'] = str_replace("%AANTAL%", $aantal_berichten, $dictonary['plaatsmsg']);
echo $dictonary['plaatsmsg'];
?>
ja oke,

maar stel nou dat ik dit wil:
eval() oplossing:
PHP:
1
2
3
4
5
6
7
8
9
$dictonary['plaatsmsg'] = "hallo \$naam, u laatste bezoek was \$lastvisit. U heeft \$aantal nieuwe berichten.";

$naam = "ludo";
$lastvisit = "1-1-2003";
$aantal = 10;

eval("\$parse = \"$parse \";"); 

echo $dictonary['plaatsmsg'];


andere oplossing.
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
$dictonary['plaatsmsg'] = "hallo %NAAM%, u laatste bezoek was %LASTVISIT%. U heeft %AANTAL% nieuwe berichten.";

$naam = "ludo";
$lastvisit = "1-1-2003";
$aantal = 10;

$dictonary['plaatsmsg'] = str_replace("%NAAM%", $aantal_berichten, $dictonary['plaatsmsg']); 
$dictonary['plaatsmsg'] = str_replace("%LASTVISIT%", $aantal_berichten, $dictonary['plaatsmsg']); 
$dictonary['plaatsmsg'] = str_replace("%AANTAL%", $aantal_berichten, $dictonary['plaatsmsg']); 


echo $dictonary['plaatsmsg'];

je kan natuurlijk ook een arrays gebruiken voor die needle en haystack van str_replace.. maar ik doe het ff zo om te laten zien dat die manier van jou veel omslachtiger is.

misschien is ie wel veiliger. maar dat ligt eraan op de manier waarop je het gebruikt.

zelf gebruik ik ook de eval() niet, maar het is wel een simpelere manier, als je veel verschillende variables in je string gebruikt.