Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:计算字符串中的值_Php_String_Eval - Fatal编程技术网

PHP:计算字符串中的值

PHP:计算字符串中的值,php,string,eval,Php,String,Eval,我从preg_replace返回了这个字符串($query) 'SELECT ({$array["sum"]}/ 5)' 我如何评估它,以便结果将是'SELECT(100/5)例如 我试过了 eval($query) 但是没有成功 你有更好的主意吗?用双引号取代单引号“” 在$\u POST期间或从用户处获取输入时使用eval()不是一个好主意。只是一个建议。只需使用操作符将它们粘在一起: $array['sum'] = 100; echo 'SELECT (' . $array['sum'

我从preg_replace返回了这个字符串($query)

'SELECT ({$array["sum"]}/ 5)'
我如何评估它,以便结果将是
'SELECT(100/5)
例如

我试过了

eval($query)
但是没有成功


你有更好的主意吗?

用双引号取代单引号


$\u POST
期间或从用户处获取输入时使用
eval()
不是一个好主意。只是一个建议。

只需使用
操作符将它们粘在一起:

$array['sum'] = 100;
echo 'SELECT (' . $array['sum' ] . ' / 5)';
将导致:

SELECT (100 / 5)

您没有正确使用eval:

$evaluated = eval("return $query;");

注意不要有任何语法错误。同样,当您以这种方式构建SQL查询时,您可能会出错。只需说,我希望您已经足够大了。

谢谢您的想法,我将测试:)字符串来自preg_replace:)我将尝试生成一个类似的字符串并对其进行评估。因此,谢谢:)非常感谢,这对您来说非常有用ine!!我肯定会添加更多的安全预防措施。最后的字符串实际上看起来是这样的:)输入示例:
“选择({total_price.total_id}/5)”
输出:
“选择(.mysqli_real_escape_string($this->app_array[“application”[“sql”][“total_price”][“total_id”])。/5)”
$evaluated = eval("return $query;");