Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
[Funktion] String Rechner [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
ebiz-webhosting
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
[Funktion] String Rechner


 
Findsch
04-08-2005, 09:04 
 
Hallo,

Ich brauche Hilfe!
Ich möchte gern ein PHP Script (am besten in einer Function verpackt) das es ermöglicht einen String zu übergeben und das Rechenergebnis zu erhalten.

Sprich:

$Rechnung = "12+3*(4+5-6)"; // usw...

$summe = rechnen($Rechnung);

// Ergebnis: $summer = "58"

Bitte Bitte helft mir!
Danke!

 
schmalle
04-08-2005, 09:17 
 
function rechnen($param)
{
return eval($param);
} ungetestet ;)

 
Findsch
04-08-2005, 09:22 
 
Nein das funktioniert nicht!

Wäre zu schön um Wahr zu sein!

 
schmalle
04-08-2005, 09:38 
 
aber so gehts: $str = "(1*3)+(65-7)";

function rechnen($param)
{
return eval("return (".$param.");");
}

echo rechnen($str);

 
Findsch
04-08-2005, 09:45 
 
Herzlichen Dank!!

es geht!!!!!

 
heddesheimer
04-08-2005, 11:09 
 
Vorsicht!

Aus der Doku:
http://de2.php.net/eval

eval -- Wertet einen String aus, als wäre er PHP-Code

Wenn du die Eingabe nicht prüfst, könnte jemand statt der Rechenaufgabe auch "phpinfo()" oder schlimmer noch "exec(rm -r \)" bzw. "exec(del c:\*.*)" eingeben ;-)

Gruß Marian

 
Findsch
04-08-2005, 11:14 
 
keine Sorge, das will ich ja gar nicht!

Viel Komplizierter!

Ich mache für unsere Firma eine Datenbank zur Stromberechnung.

Ich will in der Datenbankt Virtuelle Zähler anlegen die sich aus Realen Zählern ergeben, aber eben durch Rechnungen.

Ich ersetze die in der Dankenbank vorhandenen Variablen durch die Werte und dann lass ich diesen String rechnen!

 
onemorenerd
04-08-2005, 12:17 
 
Du baust aus Datenbankwerten also einen String zusammen - so in der Art:
$str = "{$row[0]} + {$row[1]}";
und eval'st diesen?

Warum nicht gleich$ergebnis = $row[0] + $row[1];?

 
Findsch
05-08-2005, 07:19 
 
Weil die Variablen in einer Datenbank stehen.

Also von einer Tabelle wird ein String geladen mit einer Formel drinn. Dies ist die Rechnung!

Je nach Datensätze von einer anderen Tabelle können die Werte einen anderen Wert haben. Diese Tabelle wird zuerst gelanden und in Variablen geschrieben z.B.

for (n=0;$n < mysql_num_rows($sql);$n++){

$var[]=mysql_result($sql,$n,0);
}

so. und in der anderen Tabelle stehen die Rechnungen so drinn:

$string_von_anderen_Tabelle="($var[3]+$var[5])/$var[9]" //usw.

und dies muss errechtet werden, aber zuerst müssen die Werte eingesetzt werden.


Alle Zeitangaben in WEZ +2. Es ist jetzt 17:30 Uhr.