Wer immer einen mathematischen Ausdruck in einem String auswerten bzw. ausrechnen möchte, muss ein wenig in die Trickkiste von PHP greifen.
Aber mal langsam, wir beginnen mit der Aufgabe:
$mystring = „123*1.1“;
Der String selbst kommt von irgendwo z.B. aus einem Formular und soll einen Wert + 10% berechnen. Wie machen wir das in PHP? Ein einfaches
echo $mystring;
reicht da nicht aus.
Nach ein bischen suchen im Handbuch kam ich auf diese Lösung, nicht schön, aber es geht:
eval(‚$ergebnis = ‚.$mystring.‘;‘);
echo $ergebnis;
Auf das Ergebnis kann man nun bequem zurückgreifen.
Okay, hier fehlen noch ein paar Sicherheitsmechanismen (eval is evil), aber der Grundsatz sollte klar sein und solche Funktionen sind schnell nachgerüstet (siehe die Filter-Sektion im Handbuch).
Generell sollte man eval natürlich vermeiden, aber in speziellen Anwendungen – wie in diesem – kann es durchaus Sinn machen, die “böse” Funktion zu nutzen.
Ich bin schon mal froh, diese Funktion zu haben und will diese euch nicht vor enthalten.
Es spricht aber nun wirklich nichts dagegen einen Parser zu benutzen! Eval ist auch durch ein paar ‚Sicherheitsabfragen‘ immer noch viel zu riskant! Ein echtes, produktives System sollte NIE im Frontend solche Eingaben erlauben.