Hello,
(Es wären auch eval()-Konstrukte möglich, allerdings halte ich diese für ein zu hohes Sicherheitsrisiko)
Man könnte es aber schon auf sichere Art und Weise mit eval lösen:
if(strlen($op)==1 && strstr('*+-/%', $op)!==false)
eval('$erg=$bla'.$op.'$blubb');
else
echo 'nixgut!';
Eval bindet den Code so in das Script ein, als stünde er genau an dieser Stelle, ähnlich wie include(). Man hat aus dem evaluierten Coder heraus daher vollen Zugriff auf alle Variablen und Funktionen des Scriptes. Wenn man in eval eine Funktion einbindet, ist diese nachher für das Script verfügbar. Wenn man mehrere eval() im Script hat, und diese bringen gleichnamige Funktionen mit, kracht es, da PHP ja leider noch keine Scopes für Funktionen kennt.
Um aber das Script vor unberechtigtem Zugriff auf Variablen zu schützen, sollte man eval() in eine Funktion verpacken.
Allerdings bin ich der Meinung, dass eval hier fehl am Platze ist.
Man sollte hier den Algorithmus zur Erzeugung und Auswertung der "polnischen Notation" benutzen. Wenn der den String nicht vollständig auswerten kann, ist er eben fehlerhaft. Wenn er es schafft, kann PHP über Befehlszeile rechnen...
Goggle mal nach "polnische Notation"
Grüße
Tom