因此,我有一个算法创建者,我的用户可以使用可能的变量列表中的变量来创建算法。 它们创建的算法需要进行验证,因此我将变量替换为“ 1”只是为了检查它们是否有效并返回数字而不会产生任何错误。 我的问题是我需要能够创建
之类的算法(0.5*(1+7-|1-7|))
问题在于垂直线(|),用于获取其中方程式的绝对值。当我将此方程式发送到eval()时,它将返回此错误:
解析错误:语法错误,意外的'|'在controller.php(425)中: 第1行上的eval()代码
是否有一种数学方法来获取我可以在此处使用的绝对值,或者是否有任何方法可以转义此字符,以使它不会出现错误,但仍然可以正确地计算方程式?
更新 最终接受了@AbraCadaver的建议,并做了
$string = preg_replace('/\|([\d.-]+)\|/', 'abs($1)', $string);