php variabele in string
Weet iemand of het mogelijk is om een php variabele naam in een string in een database te gooien, zodat zodra de string opgevraagt wordt, de variabele meteen uit het php script wordt weergegeven. Het gaat in dit geval om een systeem waarin de meeste text op mijn website in de database staat, en via een php functie wordt weergegeven, het is me dus alleen nog niet gelukt met variabelen.
Toevoeging op 19/08/2011 01:18:34:
Overigens is het afgeraden. Waarom zou je dat willen doen?
Zorg dat je zeker weet dat wat in de database goed is. Dit is namelijk een zéér onveilige methode.
Gewijzigd op 19/08/2011 23:32:47 door thuron thuron
Wanneer het over een CMS gaat, ben je bijna verplicht een database te gebruiken en dan maak je een veld taal aan, waarin je dan een taalcode zet. De juiste content haal je dan op afhankelijk van de taal die de bezoeker vraagt. (of automatisch)
Als het echter om een minder dynamisch systeem gaat, of om een adminpaneel gaat is het eenvoudiger met taalbestanden te werken.
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?
/* Dit is bijvoorbeeld nederlands.lang */
$lang['index']['welcome'] = 'Welkom!';
$lang['index']['content'] = 'Dit is de startpagina blablabla';
?>
/* Dit is bijvoorbeeld nederlands.lang */
$lang['index']['welcome'] = 'Welkom!';
$lang['index']['content'] = 'Dit is de startpagina blablabla';
?>
De indeling van de array kan natuurlijk ook anders. Maar ik denk dat je wel slim genoeg bent om dat zelf te bedenken ;-).
Moest je er niet uitkomen, kan je het natuurlijk eens even vragen.
ok, en als ik zo'n taalsysteem zou gaan maken, hoe werkt het dan als ik bijvoorbeeld een string krijg: "Je score tot nu toe is 50." In dit geval is 50 geen standaard maar een variabele die verschilt per gebruiker, hoe zet je dat dan in taalbestand/database
En dan doe je zoiets als:
echo $text['your_score'] . $score;
En die $text['your_score'] komt dan uit je tekstbestand / database en $score haal je op uit de database.
Die 50 is toch niet afhankelijk van taal-keuze? 50 is in het Engels zelfde als in Duits, Frans en Nederlands. Je zet dan "Je score tot nu toe is" in de database en dan vul je regel aan met de betreffende variabele op het moment dat je de pagina oproept/aanmaakt.
dat is inderdaad mogelijk als de variabele zich aan het begint aan het einde van de zin begeeft, maar wat als deze ergens anders in de zin zit? moet ik dan de 2 delen van de zin apart definiëren?
Of je doet het nog iets anders. Op de plek waaar in de vertaling de score moet staan zet jij bijvoorbeeld *score*. Dus:
Je hebt een score van *score* punten.
*score* vervang je dan door de juiste waarde.
door middel van split() bedoel je?
You've scored 50
Je hebt dus wel zeker placeholders (oid) nodig. Maar dat kan ook heel makkelijk:
str_replace('*score*', $database['score'], $lang['score'])
ah! ik ga het maar eens met str_replace proberen, ik laat weten of het gelukt is of niet.
Thuron thuron op 21/08/2011 13:48:40:
door middel van split() bedoel je?
Nee, via http://nl3.php.net/manual/en/function.str-replace.php
Zie ook opmerking hierboven.
ik heb het nu voor elkaar met str_replace en het werkt perfect!!! heel hartelijk bedankt voor alle hulp allemaal!
mooi zo... succes er mee!