解析PHP字符串中的变量

注意:在这里,Eval是完全已知的,分析的字符串仅由管理员输入,目的是将指令存储在数据库中,而不受指令的限制。如果您有一个好的选择,那么它总是会受到赞赏,但不要只说“评估是不好的”。

例如,我在PHP中有一个String

$myString = "(35*$var1*64)/$var2";

我想要eval()这个字符串,但是在此之前,我想像这样修改字符串中的所有变量:

$var2 -> $_POST['var2']

中的变量后面可能有空格,也可能没有空格$myString

当我eval时$myString,PHP会引发错误“未定义的变量$ var1”。PHP读取了字符串并解析了变量,因此我想应该有一种解析字符串中所有变量的方法。

输出应为:

$myStringParsed = "(35*$_POST['var1']*64)/$_POST['var2']";

或同等学历。

伊戈尔·R(Igor R)

也许不是最好的解决方案,但是您可以预处理$ _POST变量并生成$ variablesString,如下所示:

$variablesString = '';
foreach($_POST as $key => $val) {
    $variablesString .= '$' . $key . ' = ' . $val . ';' . PHP_EOL;
}

eval($variablesString . PHP_EOL . $myString)

对于字符串支持,您可以检查$ val是否为字符串,如果是,则用引号将其引起来。

第二种方式

$myString = 'return (35 * $var1 * 64) / $var2;';
$re = "/\\$(\\w*)/im";

preg_match_all($re, $myString, $matches);

foreach($matches[1] as $match) {
    $search = '$' . $match;
    $replace = '$_POST[\'' . $match . '\']';
    $myString = str_replace($search, $replace, $myString);
}
echo eval($myString);

你可以在这里检查

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从PHP文件中的字符串解析内联变量

来自分类Dev

php解析HTML内容的字符串变量中的XPath

来自分类Dev

在PHP中解析JSON字符串

来自分类Dev

PHP中的模板字符串解析

来自分类Dev

解析php中的json字符串

来自分类Dev

PHP:JSON解析中的字符串

来自分类Dev

php变量解析为双引号字符串

来自分类Dev

JavaScript - 解析字符串中的单个变量

来自分类Dev

PHP解析字符串中的自定义字符

来自分类Dev

PHP解析字符串中的自定义字符

来自分类Dev

从JS变量更新查询字符串中的PHP变量

来自分类Dev

从JS变量更新查询字符串中的PHP变量

来自分类Dev

从PHP中的变量中删除重复的字符串

来自分类Dev

变量不解析为字符串

来自分类Dev

将字符串解析为变量

来自分类Dev

PHP / Regex:解析字符串中的JSON

来自分类Dev

包含在php字符串中时解析

来自分类Dev

PHP解析复杂字符串中的数字

来自分类Dev

无法解析PHP中的时间字符串

来自分类Dev

如何从php中的字符串正确解析温度?

来自分类Dev

字符串中的变量

来自分类Dev

字符串复杂时如何解析php中的字符串模式

来自分类Dev

PHP变量字符串中的IF / ELSE语句

来自分类Dev

$ _POST字符串变量在PHP中的异常行为

来自分类Dev

字符串中的php变量未映射

来自分类Dev

HTML查询字符串中的PHP变量

来自分类Dev

如何使用php从变量中获取字符串?

来自分类Dev

在PHP字符串中插入JS变量

来自分类Dev

MySQL查询中的PHP变量WHILE字符串中断