Autor Zpráva
janbarasek
Profil
Ahoj,
existuje nějaká inteligentnější metoda, jak vyhodnocovat matematické příklady, aniž bych použil funkci eval()?
Mějme následující příklad:
<?php
$q = '2+3*4'; // příklad zapsaný formou řetězce
eval ('$vysledek = ('.$q.');'); // "zpracování" výrazu pomocí jádra PHP a zápis do proměnné
echo $vysledek; // výpis výsledku
?>
Funkce eval() je sice užitečná, nicméně také nebezpečná, protože jí můžu podstrčit závadný kód a zmocnit se nad celou aplikací. Obejít tuto metodu je velice jednoduché, stačí poslat nulový bajt na začátku (tím se resetuje proměnná) a pak můžu spustit libovolný vlastní kód.

Rád bych použil nějaké elegantní a bezpečné řešení. Napadlo mě také vytvořit vlastní matematický parser, ale s tím by bylo hodně práce, měl by v sobě hromadu chyb a hlavně by to bylo natolik složité, že bych to vůbec nemusel zvládnout.

Hledám ideálně nějakou knihovnu, které když předám matematický příklad formou řetězce, tak vrátí výsledek. Existuje vůbec něco takového?

Ještě mírně zcestná otázka: Pokud taková knihovna existuje, umí také řešit jednoduché lineární rovnice?

Děkuji za jakékoli reakce.
Fisir
Profil
Reaguji na janbaraska:
Stačí hledat.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: