我需要一些PHP基本语法的帮助,
我得到以下字符串:
$str = "return (strlen(replace) <= 5 && strlen(replace) >= 1);";
我得到了一个变量:$var = "VariableValue";
和st_replace函数:str_replace('replace', $var, $str);
我想要做的是实际使用eval,例如:
if(eval($str)){//This should now make the if condition **look like**
//if(strlen(*'VariableValue'*)...)
//
echo 'Success';
}else{
echo 'Ask the guys at StackOverFlow :),sure after searching for it';
}
因此,如果您注意到if(strlen('VariableValue')...)这就是我想要做的事情,请在包含vars值的eval之后创建最后的if语句WITH QUOTES so strlen实际上处理它,
我希望我根据需要明确表示:)
提前致谢
答案 0 :(得分:1)
a你不需要eval()(有理由说它有时被称为evil()......)。
试试这样的条件:
if ( (strlen($var) <= 5) && (strlen($var) >= 1) )
答案 1 :(得分:1)
尝试这样
$str = "return (strlen(##replace##) <= 5 && strlen(##replace##) >= 1);";
$var = 'test';
// you have to assign the str_replace to $str again. And use " around the $var.
$str = str_replace('##replace##', '"' . addslashes($var) . '"', $str);
if (eval($str)) {
echo 'Success';
}
else {
echo 'Ask the guys at StackOverFlow :),sure after searching for it';
}
我添加了## around replace,因为最好总是有一个有点独特的字符串来替换...就像你扩展你的eval'd代码以包含str_replace
一样,那么它也会被替换掉否则。
修改强>
根据@ Erbureth的评论,用addslashes
转换$ var。