Blaubart: String addieren

Beitrag lesen

Tach.

eval('$ergebnis = '.$aufgabe.';');

Tatsächlich!

Habe ich kurz davor gedacht, dass das ja Quatsch wäre...
Aber Eval() ist ja auch keine Funktion, sondern ein Parser-Konstrukt.

Was auch immer eine Funktion von einem "Parser-Konstrukt" unterscheidet ...

Der springende Punkt ist einfach, daß $ergebnis in doppelten Anführungszeichen als Variable gewertet wird, und das ist in diesem Fall nicht gewollt. Alternativ kann man auch

eval("\$ergebnis = $aufgabe;");

schreiben.

Gefährlich ist es trotzdem, hier Werte von außen einzubringen.

Ja, wenn das ungeprüft geschieht. Wenn der reguläre Ausdruck zum Finden der "Aufgabenzeichenkette" was taugt, stellt er ja sicher, daß das richtige verarbeitet wird.

--
Once is a mistake, twice is Jazz.