Я пытаюсь написать функцию PHP, чтобы проверить, представляет ли строка математическое выражение.PHP Проверяем, что строка является математическим выражением
Это то, что у меня есть:
function is_math($maybe_math){
$pattern = '([-+]?[0-9]*\.?[0-9]+[\/\+\-\*])+([-+]?[0-9]*\.?[0-9])';
if(0 === preg_match($maybe_math, $pattern)){
return true;
}
}
Я тестирую с этими возможностями:
$valid = is_math('(1-4*(9*5/1)+1)'); //true
$invalid = is_math('hats' ); //false
$valid_and_invalid = is_math('(1-4aaa*(9*5/1)+1k)'); //true
Как вы можете видеть, насколько он оценивает верно для математического выражения или строка с действительные математические символы и недопустимые математические символы. В настоящий момент третий тест, который я показываю, должен быть ложным, поскольку в нем есть буквы, и я не занимаюсь здесь алгеброй.
Моя цель здесь заключается в создании функции, которую я могу использовать для проверки того, что моя строка может быть передана в eval и вернуть номер и не подвергать риску выполнение небезопасного кода, поскольку эти числа частично относятся к данным POST.
Итак, в чем проблема сейчас? – Rizier123
Возможный дубликат [Соответствие математическому выражению с регулярным выражением?] (Http://stackoverflow.com/questions/2595254/matching-math-expression-with-regular-expression). Проверьте ответ с помощью php-решения: http://stackoverflow.com/a/2596378/2253302 –
используйте функцию php eval и да, этот вопрос повторяется – Saleem