在PHP中解析字符串值
我有两张桌子。一个是规则集,另一个是逻辑。假设我的规则集表包含一行在PHP中解析字符串值,php,parsing,Php,Parsing,我有两张桌子。一个是规则集,另一个是逻辑。假设我的规则集表包含一行[(R1和R2)或R3],逻辑表包含每个规则的逻辑。比如: R1 | x > 4 R2 | y < 9 R3 | z < 5 R1 | x>4 R2 | y
[(R1和R2)或R3]
,逻辑表包含每个规则的逻辑。比如:
R1 | x > 4
R2 | y < 9
R3 | z < 5
R1 | x>4
R2 | y<9
R3 | z<5
我确实希望替换相关位置的逻辑值(例如
[((x>4)和(y<9))或(z<5)]
)执行。
我怎样才能做到呢 我不完全明白这个问题,但我想您是在尝试根据从数据库获取的字符串变量进行比较 如果是这种情况:
<?php
$logic_rule = "(R1 AND R2) OR R3"; // SELECT * FROM `myrules` WHERE etc
$x=1;
$y=2;
$z=3;
/* fetch data and iratate with a foreach // SELECT * FROM `conditions` WHERE etc */
$logic_rule = str_replace("R1", "x > 4",$logic_rule);
$logic_rule = str_replace("R2", "y < 9",$logic_rule);
$logic_rule = str_replace("R3", "z < 5",$logic_rule);
/* $logic_rule is now: $logic_rule = "(x > 4 AND y < 9) OR z < 5"; */
/* replace variables (or place in array and foreach the array) */
$logic_rule = str_replace("x", $x,$logic_rule);
$logic_rule = str_replace("y", $y,$logic_rule);
$logic_rule = str_replace("z", $z,$logic_rule);
/* $logic_rule is now: $logic_rule = "(1 > 4 AND 2 < 9) OR 3 < 5"; */
/*Test the condition:*/
var_dump (eval ("return (".$logic_rule.");")); // true