wenn du es bei + - * / und ( ) belassen willst:
Überprüfen ob was anderes als zahlen und +, -, *, /, (, ) vorkommt (leerzeichen vorher entfernen)
([^0-9+\-*/\(\)]+)
anschließend mit eval berechnen
hier ein kurzbeispiel nur mit dem obiren regex:
PHP-Code:
$term = "(2+3)*7";
if(preg_match("#([^0-9+\-*/\(\)]+)#", $term))
die('Ungültige Zeichen gefunden.');
echo eval('return ' . $term . ';');
du könntest noch den punkt (\.) zulassen für kommazahlen, überprüfen, ob die klammer richtig gesetzt sind, sogar eine autovervollständigung (fehlende Klammern je nach dem an den anfang oder ans ende anfügen), ...
aber bei potenzen kommste da schon an seine grenzen.
und das was wolfram alpha kann? das, so wage ich zu behaupten, wirst du nie hinkriegen...