У меня на страничке есть форма, в нее пользователь вводит функцию по определенному шаблону.
Например, x^3+x^2+20. Из этого поля мы получаем строку с функцией.
Как ее привести к виду, удобному для вычислений? Чтобы значение x подставлялось вместо элемента строки x, и дальше уже высчитывалось значение функции в конкретной точке.
Подскажите хотя бы идею. Я понимаю, что можно просто взять и поменять x на $x, но у меня при этом получается строка "2+3", например, которая при последующих действиях и ведет себя, как строка. И даже преобразование к числу не помогает
Довольно приблизительный пример для php5.6+:
<?php
// формула
$str = 'x^3+x^2+20';
// проверка на синтаксис (тут, в примере, конечно просто на допустимые символы проверяется)
if (preg_match('/[^x\d\+\-\*\/^]/', $str)) {
die('Недопустимый символ');
}
// замена переменной и символа степени
$str = str_replace(['x', '^'], ['$x', '**'], $str);
// а дальше можно считать
$x = 5;
// не рекомендуется использовать,
// но синтаксис формулы проверили, дырок нет в безопасности у нас ;)
eval('$y = ' . $str . ';');
var_dump($y); // int(170)
Тест http://sandbox.onlinephpfunctions.com/code/2c76d0cb08f4ae7b9fa5d5c4e77b34586c58beb9
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
При выборе пункта Нет, в форме автоматически добавляется текст "Нет", как это правильно реализовать на JS, заранее спасибо!