я следующий код:PHP ошибка Eval синтаксического анализа
<?php
function calculate_string($mathString) {
$mathString = trim($mathString); // trim white spaces
$mathString = preg_replace("/[^0-9\(\)\+\-\*\/\.]/", "", $mathString);
return eval("return $mathString;");
}
$string1 = " (1 + 1) *3+ (2 + 2)";
echo calculate_string($string1);
$string2 = " (1 + 1) *3+* (2 + 2)";
echo calculate_string($string2);
?>
функция calculate_string() необходимо вычислить математическое выражение, приведенное в строке как парам. Первый вызов string1 работает хорошо.
Но, как я могу определить, если математика. строка имеет математику. ошибка в синтаксисе, как во втором вызове, и возврат некоторого значения зависит от типа ошибки или простого возврата ничего (лучшее решение)? Итак, проблема заключается в parse_error во втором вызове, когда выражение math содержит ошибки в синтаксисе.
Пожалуйста, помогите.
Почему у вас есть все эти escape-последовательности в регулярном выражении? 'preg_replace ('~ [^ 0-9() * /. + -] ~', '', $ mathString)' is * точно * эквивалентно тому, что у вас есть сейчас, но гораздо читабельнее. – NullUserException
Вы должны изучить использование текстового редактора подсветки синтаксиса, такого как Notepad ++ или JEdit, поможет вам уловить ошибки синтаксического анализа, так как он сломает подсветку синтаксиса в источнике ошибки. –
* «Как я могу определить, есть ли математическая строка с математической ошибкой в синтаксисе» * Напишите правильный парсер вместо использования 'eval()'. – NullUserException