我正在创建的程序的一部分包括用户创建条件,我将存储在mysql数据库中。我希望语法比php允许的更容易,但由于这最终将使用eval()作为php代码运行,因此它需要具有有效的语法。
例如:
用户输入:
4<var1<=9 AND var2<6
结果应该是:
4<var1 AND var1<=9 AND var2<6
在评估之前,我用if语句将其包围,只返回true。
检测和拆分比较的好方法是什么?
另外,我如何测试生成的代码不会导致任何php错误,以便我可以通知用户?
编辑: 要明确的是,这些条件可以是任何标准条件,例如&gt;,&lt;,&gt; =,&lt; =,==。
答案 0 :(得分:0)
即使是更加用户友好的方法也会像Treffynnon这样的界面说,解析字符串的初始方法是:
这将是一个例子(未经测试,认为它是伪代码) $ tokens = explode('',$ user_string);
$to_evaluate = array();
foreach( $tokens AS $tok )
{
if( $tok!='AND' && $tok!='OR' )
{
$parts = preg_split("/(<|>|<=|>=|==|!=)+/", $tok);
if( count($parts)==3 )
{
$to_evaluate[] = array( 'element1'=>$parts[0], 'condition'=>$parts[1], 'element2'=>$parts[2] );
}
else
echo "¿Error?";
}
else
$to_evaluate[] = $tok;
}
此时,您必须遍历$ to_evaluate并开始评估您找到的每个条件。