Как решить математическое уравнение с вертикальной линией (|), используя php eval () - PullRequest
0 голосов
/ 28 января 2019

Итак, у меня есть создатель алгоритма, где мои пользователи могут создавать алгоритмы, используя переменные из списка возможных переменных.Алгоритмы, которые они создают, должны быть проверены, поэтому я заменяю переменные на «1», чтобы проверить, верны ли они, и вернуть число, не создавая ошибок.Моя проблема в том, что мне нужно, чтобы можно было создать алгоритм, подобный

(0.5*(1+7-|1-7|))

. Проблема в том, что это вертикальная линия (|), которая используется для получения абсолютного значения уравнения в нем.Когда я отправляю это уравнение в eval (), он возвращает эту ошибку:

Ошибка разбора: синтаксическая ошибка, неожиданная '|'в controller.php (425): код eval () в строке 1

Есть ли математическая альтернатива для получения абсолютного значения, которое я мог бы использовать здесь, или есть какой-нибудь способ экранирования этого символачтобы оно не выдавало ошибку, но все равно правильно отображало уравнение?

ОБНОВЛЕНИЕ в итоге прислушалось к совету @ AbraCadaver и

$string = preg_replace('/\|([\d.-]+)\|/', 'abs($1)', $string);
...