Mit Formeln rechnen

ChrisEU

Grünschnabel
Ich möchte, dass der User eine Formel eingeben und dann die zwei Variablen bestimmen kann.

Nur leider funktioniert mein PHP Teil nicht. Ich hab auch die vermutung, dass $formel ein String ist und deshalb angezeigt wird und nicht das Ergebnis.

PHP:
<?php 
$formel = $_GET[formel];
$x = $_GET[x];
$y = $_GET[y];

$formel = explode(" ",$formel);
$formel = str_replace(x, $x, $formel);
$formel = str_replace(y, $y, $formel);
$formel = implode("", $formel);
$ergebnis = $formel;
echo $ergebnis;
?>
 
PHP:
<?php 
$formel = $_GET['formel'];
$x = $_GET['x'];
$y = $_GET['y'];

$formel = explode(" ",$formel);
$formel = str_replace('x', $x, $formel);
$formel = str_replace('y', $y, $formel);
$formel = implode("", $formel);
$ergebnis = $formel;
echo $ergebnis;
?>

Dir fehlten da einige Anführungszeichen.

Übrigens würde ich die Formel eher über ein Formular übergeben, da viele Formelzeichen in der URL kodiert werden müssen und du weitere Funktionen aufrufen müsstest, damit sie richtig übergeben werden.
 
Mit den " bzw ' funktioniert es genauso nicht wie ohne die " bzw '.
Meintest du mit "als Formular übergeben" als Methode POST anstatt GET zu nehmen?
 
$ergebnis = $formel kopiert dir in der Tat nur den String. Das bringt dich nicht weiter. Vielleicht funktioniert es mit eval() aber versprechen kann ich dir nichts, habe die Funktion selber noch nicht verwendet und so ein Problem nicht gehabt.
 
Mein Fehler.
ravendead hat Recht, [phpf]eval[/phpf] ist da die richtige Funktion für.

Hier ein Beispiel:

PHP:
$formel = '2*x - 4*y';
$x = '4';
$y = '5';

$formel = explode(" ",$formel);
$formel = str_replace('x', $x, $formel);
$formel = str_replace('y', $y, $formel);
$formel = implode("", $formel);

eval("\$ergebnis = $formel;");
echo $ergebnis;
 
Wichtig wäre noch anzumerken.

Eval is evil!

Du musst sehr! gut aufpassen mit dieser Funktion. Als Anfänger am besten nicht online stellen sondern nur Lokal benutzen.

Wenn möglich solltest du dich mal etwas genauer mit den Problemen und Sicherungen für eval() auseinandersetzen.
 
... oder wenigstens ein paar sehr sehr genaue reguläre Ausdrücke mit einbauen.

Aber Dein Server währe schon einiges sicherer wenn Du das eval mit Javascript machst und nur die Lösung zum Server schickst.
 
Zurück