我需要为like,between,contains和match()
表达php eval。
我已经为其他逻辑运算符做了很好的工作。
E.g。
echo eval("return ('1'==1&&'en-au'!='en-us');");
但我必须评估这个表达式:
echo eval("return ('xxxx.match(xxx) != null');");
总是回归真实。有人可以解释如何评估这种表达方式。
答案 0 :(得分:1)
对于初学者,以下是如何评估preg_match()
$test = "abFc";
echo eval("return preg_match('#F#', '$test');");
这将输出:1
语法为'xxxx.match(xxx) != null'
不是有效的PHP语法,所以你不能直接使用eval()
- 它需要是有效的PHP。在您的javascript示例中,xxxx
和xxx
是变量。他们需要重写,以便他们可以在PHP中进行评估。在我的示例中,我已将语句重写为eval("return (match('$xxxx', '$xxx') !== null);")
您可以编写一个函数,从表中传递变量,并根据需要进行尽可能多的比较和代码行进行评估。
例如:
$xxxx = "abFc";
$xxx = "F";
$eval = eval("return (match('$xxxx', '$xxx') !== null);");
if ($eval) {
echo "true";
} else {
echo "false";
}
function match($string, $regex){
// match: executes a search for a match in a string. It returns an array of information or null on a mismatch.
preg_match_all('#' . $regex . '#', $string, $amatch);
if(count($amatch[0]) > 0){
return $amatch[0];
} else {
return null;
}
}
另外,请阅读有关使用eval()
的警告您需要确保传递给它的数据是安全的。