0

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')...)が何であるかに気付いた場合は、これが私がやりたいことです。evalの後にvars値WITH QUOTESを含む最後のifステートメントを作成して、strlenが実際に処理します。

必要に応じて明確にしたいと思います:)

前もって感謝します

4

2 に答える 2

1

aそのためにeval()は必要ありません(evil()と呼ばれることがある理由があります...)。

次のような条件を試してください。

if ( (strlen($var) <= 5) && (strlen($var) >= 1) )
于 2012-10-05T10:59:28.607 に答える
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';
}

置換するために常にいくらか一意の文字列を使用することをお勧めするため、置換の前後に##を追加しました...評価されたコードを拡張して含むようにするとstr_replace、それ以外の場合も置換されます。

編集@Erburethのコメントに従って
$varをエスケープしました。addslashes

于 2012-10-05T11:00:46.520 に答える