tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
8
ZUGRIFFE
551
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von Infernus
    Infernus Infernus ist offline Mitglied Bronze
    Registriert seit
    Nov 2004
    Beiträge
    29
    Hi Leute,

    gibt es die möglichkeit, eine als String eingelesene (per textfeld) mathematsche Funktion zu berechnen?

    als beispiel hab ich da die Funktion: 8 / (4 - pow(5,2)).
    Diese würde ich beispielsweise gerne in das Textfeld eingeben, sodass mir PHP das ergebniss berechnet.

    (Hinterher wollte ich das dann so optimieren, dass man die Variable X einsetzt, die per replace() ersetzt werden kann in der funktion, und damit kann man dann werte aus für einen bestimmten wertebereich errechnen..)

    Thx für Hilfen
    Infernus
     

  2. #2
    Registriert seit
    Dec 2001
    Ort
    Bayern
    Beiträge
    5.806
    Blog-Einträge
    5
    Eine bequeme, aber in der Form ganz und gar nicht empfehlenswerte Möglichkeit wäre die Verwendung von eval():
    PHP-Code:
    <?php

    $funktion 
    $_GET['funktion'];
    $ergebnis = eval('return ('.$funktion.');');

    ?>
    Das Problem dabei ist, dass dadurch beliebiger PHP-Code ausgeführt werden kann, was natürlich eine kritische Sicherheitslücke darstellt.

    Daher sollte man den String entweder vorher entsprechend überprüfen oder gleich einen mathematischen Parser implementieren.
     
    „Gib einem Menschen einen Fisch, und er wird für einen Tag satt. Lehre ihn Fischen, und er wird ein Leben lang satt.“
    “For every complex problem, there is an answer that is short, simple and wrong.”
    “Pessimism is safe, but optimism is a lot faster!”


    Aktuelles Coding Quiz: #17 - Wörter kreuz und quer

  3. #3
    Avatar von son gohan
    son gohan son gohan ist offline Mitglied Diamant
    Registriert seit
    Dec 2004
    Beiträge
    1.742
    Hi, ich hab ja nicht viel Ahnung, aber wenn man den String per Typumwandlung irgendwie in eine Float oder Integrer Zahl umwandelt, dann müsste man damit doch auch rechnen können.
     

  4. #4
    Avatar von Infernus
    Infernus Infernus ist offline Mitglied Bronze
    Registriert seit
    Nov 2004
    Beiträge
    29
    ja, aber in dem String stand nich nur ein Wert, sondern eine komplette funktion.

    Vielen dank, das klappt wunderbar mit dem eval()
     

  5. #5
    Registriert seit
    Dec 2001
    Ort
    Bayern
    Beiträge
    5.806
    Blog-Einträge
    5
    Hast du denn auch eine vorherige Überprüfung des Eingabestrings eingebaut?
     
    „Gib einem Menschen einen Fisch, und er wird für einen Tag satt. Lehre ihn Fischen, und er wird ein Leben lang satt.“
    “For every complex problem, there is an answer that is short, simple and wrong.”
    “Pessimism is safe, but optimism is a lot faster!”


    Aktuelles Coding Quiz: #17 - Wörter kreuz und quer

  6. #6
    Avatar von Infernus
    Infernus Infernus ist offline Mitglied Bronze
    Registriert seit
    Nov 2004
    Beiträge
    29
    Nein, bisher noch nicht.

    Würde dich dann doch direkt mal fragen, weil mit dem "Pattern Syntax" doch noch mein Probleme habe:

    wie lasse ich per preg_match() nachprüfen ob nur bestimmte symbole im übergebenen String enthalten sind?
    (das wären dann 0-9, "-", "+", "/", "^", ":", "|" und "x")

    kleine fragen schaffe ich damit noch, aber bei solchen verzweifle ich immer schnell
     

  7. #7
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    PHP-Code:
    <?php

        
    if( preg_match('#^[^0-9+\-/^:|x\s]+$#'trim($string)) && strlen(trim($string)) > ) {
            echo 
    'Es wurdee ein oder mehrere unzulässige Zeichen benutzt!';
        }

    ?>
     
    Markus Wulftange

  8. #8
    Avatar von SilentWarrior
    SilentWarrior SilentWarrior ist offline Mitglied Diamant
    Registriert seit
    Dec 2001
    Beiträge
    3.078
    Kann ja sein, dass mich zu später Stunde schon die Müdigkeit überfallen hat, aber fehlt in dem Ausdruck nicht ein Asterisk als Multiplikationszeichen, Gumbo?
     

  9. #9
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    Kann ja sein, dass mich zu später Stunde schon die Müdigkeit überfallen hat, aber fehlt in dem Ausdruck nicht ein Asterisk als Multiplikationszeichen, Gumbo?
    Ich habe mich lediglich an Infernus’ Vorgaben gehalten und die sehen dieses Zeichen nicht vor.
     
    Markus Wulftange

Ähnliche Themen

  1. Mathematische Funktionen
    Von TraphiX im Forum PHP
    Antworten: 2
    Letzter Beitrag: 20.07.10, 20:42
  2. Mathematische Funktionen Library
    Von KarlSoost im Forum Algorithmen & Datenstrukturen mit Java
    Antworten: 2
    Letzter Beitrag: 25.06.10, 12:51
  3. Mathematische Funktionen berechnen
    Von Avedo im Forum .NET Café
    Antworten: 7
    Letzter Beitrag: 13.09.09, 15:22
  4. Antworten: 2
    Letzter Beitrag: 04.09.07, 07:19
  5. Mathematische Funktionen mit PHP?
    Von Slater im Forum PHP
    Antworten: 2
    Letzter Beitrag: 12.02.04, 14:24