Вычисление строк PHP

Мой вопрос в том,

Как мы можем выделить цифры и операторы из строки в PHP?

Например – что такое 2 + 2?

Итак, как мы можем вывести 2 + 2 из этой строки, РАСЧЕТИТЬ ее и отобразить соответствующий результат?

Благодарю.

function calculate_string( $mathString ) { $mathString = trim($mathString); // trim white spaces $mathString = ereg_replace ('[^0-9\+-\*\/\(\) ]', '', $mathString); $compute = create_function("", "return (" . $mathString . ");" ); return 0 + $compute(); } $string = " (1 + 1) * (2 + 2)"; echo calculate_string($string); 

Взгляните на класс evalMath на PHPClasses, который может обрабатывать довольно сложные формулы.

В качестве альтернативы:

 $string = '2 + 2'; list($operand1,$operator,$operand2) = sscanf($string,'%d %[+\-*/] %d'); switch($operator) { case '+' : $result = $operand1 + $operand2; break; case '-' : $result = $operand1 - $operand2; break; case '*' : $result = $operand1 * $operand2; break; case '/' : $result = $operand1 / $operand2; break; } echo $result; 

Если вы хотите вычислить что-то, что не учитывает операторы группировки (такие как ( и ) ) или следуют порядку операций / приоритета оператора, это довольно просто.

Если, однако, вы хотите принять во внимание эти вещи, тогда вы должны быть готовы написать парсер для контекстного свободного языка.

ИЛИ, вы могли бы искать библиотеку, которая уже написана