我需要一些帮助,在PHP基本语法,
我得到了下面的字符串:
$str = "return (strlen(replace) <= 5 && strlen(replace) >= 1);";
我有一个变量: $var = "VariableValue";
和st_replace功能: str_replace('replace', $var, $str);
我所试图做的像somehing实际上使用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';
}
所以,如果你注意的是,如果(strlen的(“VariableValue”)...)这就是我想做的事,做最后的if语句含有所以实际上strlen的处理它引述瓦尔值EVAL后,
我希望我清楚需要:)
提前致谢
尝试像这样
$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';
}
我加了##左右更换,因为它是一个好主意,总是有一个很独特的字符串来代替......就像当你扩大你的eval'd代码,包括str_replace
,那简直太否则更换。
编辑
躲过了$ VAR与addslashes
按@ Erbureth的评论。
a您不必为eval()函数(也有原因,它有时被称为邪恶的()...)。
刚刚尝试这样的条件:
if ( (strlen($var) <= 5) && (strlen($var) >= 1) )
文章来源: Using a string as an expression to be send to eval() and replacing a sub-string with a vriable value PHP