Pagina 1 van 1
PHP -> Math
Geplaatst: 07 feb 2006, 12:26
door ElbertF
Is er een PHP-functie (als in JavaScript) om een som in een string uit te rekenen? Zoiets als:
print
math('1+1');
output: 2

Geplaatst: 07 feb 2006, 16:35
door WebSiteNet
Je kan proberen om met
eval() iets voor elkaar te krijgen of een functie uit
math te halen.
Geplaatst: 07 feb 2006, 21:40
door ElbertF
eval() is denk ik wat ik zoek, ik heb nu alleen geen beschikking over een server..
$formule = '1 + 1';
eval('$uitkomst = ' . $forumule . ';');
print $uitkomst;
Zou dit moeten werken?
Bedankt

Geplaatst: 07 feb 2006, 21:48
door Paul
Parse error: syntax error, unexpected ';' in D:\files\test.php(3) : eval()'d code on line 1
Krijg ik dan.
Code: Selecteer alles
<?php
$formule = '1 + 1';
eval('$uitkomst = ' . $formule . ';');
print $uitkomst;
?>
Werkt wel

Geplaatst: 07 feb 2006, 21:51
door ElbertF
Door een spelfoutje in "formule" dus, maar ik ben blij dat het werkt
Nu kan ik wiskunde gebruiken in m'n templates

Geplaatst: 08 feb 2006, 11:59
door Donny_nl
het kan nog makkelijker:
Code: Selecteer alles
<?php
$uitkomst = 1+1;
print ($uitkomst);
# of
print(1+1);
?>
Geeft allebei 2 als resultaat, je kunt variabelen simpelweg printen, ongeacht het type van de var (string of integer). Of je wilt weten of dit ook goed PHP is kun je error_reporting(E_ALL) erboven zetten. Je zult zien dat er geen fouten zijn en dit dus acceptabel is.
Geplaatst: 08 feb 2006, 12:18
door Paul
Print toch echt
, en dat was niet de bedoeling

Geplaatst: 08 feb 2006, 13:41
door Donny_nl
Er staat toch een duidelijk verschil in jouw scriptje en de mijne.
Jij definieert $var als een string en die print je vervolgens. Dan krijg je als ouput idd de string 1+1. Ik maak een var die 1+1 optelt en de uitkomst print. Verschil zit em in de quotes. Daarmee definieer je een string in dit geval. Zonder quotes 'ziet' PHP dat er een berekening moet worden uitgevoerd.
Geplaatst: 08 feb 2006, 14:07
door Paul
Donny_nl schreef:Er staat toch een duidelijk verschil in jouw scriptje en de mijne.
Jij definieert $var als een string en die print je vervolgens. Dan krijg je als ouput idd de string 1+1. Ik maak een var die 1+1 optelt en de uitkomst print. Verschil zit em in de quotes. Daarmee definieer je een string in dit geval. Zonder quotes 'ziet' PHP dat er een berekening moet worden uitgevoerd.
de vraag van spambot is om het als het in een string staat uit te rekenen. En dat kan dus bij jouw oplossing niet.
Geplaatst: 08 feb 2006, 23:45
door ElbertF
Dank je Donny_nl, maar zoals Paulus aangaf heb je de vraag niet helemaal begrepen. eval() maakt het mogelijk formules in templates of bbcode te parsen, bijv:
[math](1 + 2) * 3[/math]
..wordt dan '9'. Ik moet het alleen wel uitwerken om het veilig te houden, anders wordt elke PHP-code uitgevoerd i.p.v. alleen rekenkundige forumules..
