php - 将字符串转换为可执行表达式 PHP?

标签 php string laravel expression

我正在开发 Expression Builder,用户可以在其中添加许多规则。

我正在尝试将规则转换为一个表达式,但 PHP 始终将其视为字符串并始终返回 true

有什么方法可以使该表达式可执行吗?

public function translate($record = null){
        $rule = $this->rule;
        $conditions = [];
        if( count($rule->rules) ){
            $last_key = key( array_slice( $rule->rules, -1, 1, TRUE ) );
            foreach ($rule->rules as $key => $value) {
                $conditions[] = '"'.$record->{$value->field} .'" ' . $this->operator($value->operator) .' "'. $value->value.'"';
            }
        }

        $condition = implode(' '.$rule->condition.' ', $conditions);

        return $condition;// result : "Full Packaged Product" == "Full Packaged Product" AND "No" != "Y"
    }

// using here

foreach( $records as $ind => $record ){
            foreach( $rules as $rule){
                // $condition = $rule->translate(collect($record));
                $condition = $rule->translate($record);
                if($condition){
                    dump('Pass', $condition);
                }else{
                    dump('Fail', $condition);
                }
            }
        }

我还尝试使用 eval() PHP 函数,但没有成功!

谢谢, 甘蓝

最佳答案

如果您确定代码是安全的,您可以使用 eval()

用法:

eval('$res = "yes" == "no" ;'); 
var_dump($res); // bool(false)

关于php - 将字符串转换为可执行表达式 PHP?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48557141/

相关文章:

arrays - Swift String.Index 与将字符串转换为数组

php - Laravel 验证 float 长度(不是 float 的值)

php - 如何在 Laravel 4.2 的 required_if 值中使用正则表达式

php - 将从数据库中检索的行存储为 php 中的单独变量

php - 如何创建 .htaccess 文件以创建友好的 URL

php - 带有 2 个(编辑和删除)按钮的单个 PHP 表单

phpmyadmin 错误 "#1062 - Duplicate entry ' 1' for key 1"

c++ - 引用每个 const 字符串是一种好习惯吗?

python,十六进制值转换为字符串/整数

php - 如何使用 Laravel 进行此 SQL 查询?