0

こんにちは、LISP を学んでいて、一日中 php をプログラムして生計を立てているので、php.net をいじっていて、eval 関数を見つけました... それで、いじり始めました!

eval を使用してクレイジーなことを行う方法についてもっと知りたいです。これとすべてで関数を作成できることは知っています...しかし、次のコードが機能しない理由を尋ねたかったのです。

$var = "echo \"FOZZ\";";
for($i = 0; $i < 100; $i++)
    $var  = "eval(\"".$var."\");";
print $var;   
eval($var);

また、eval で他に興味深いものはありますか!

4

3 に答える 3

1

Web プログラミングの一般的なケースとして、Ive は xilla_tags というライブラリを開発しました。これにより、Lisp 風味の PHP コードを簡単に記述できるようになりました。これにより、従来のアプローチよりもはるかに読みやすくなります。

xilla_tags については、xilla タグのサンプルを参照してください。

PHP の Lisp スタイルに関しては、Jacob Hannsen が彼の bitchware サイトで、より一般的なケースに関する優れた記事を公開しています。

于 2009-10-01T05:22:38.520 に答える
1

あなたのステートメントは 'eval("eval("echo"FOZZ";");")' になります。二重引用符が互いに干渉してエラーを引き起こしています。

最初の行を $var = "echo \'FOZZ\';"; に変更してみてください。

注: eval の使用には注意してください。

于 2009-01-09T18:03:59.447 に答える
0

引用符で囲まれた文字列内の引用符をエスケープする必要があるため、機能しません。引用符が含まれているため$var、評価の別のレイヤー内に詰め込む反復ごとに引用符をエスケープする必要があります。

eval()とはいえ、このような過度な使用は容認しません。一度でも使用することはめったになく、最も必要な場合にのみ使用する必要があります。 eval()どんなプログラミング言語でも、起こるのを待っている事故です。

于 2009-01-09T18:04:33.643 に答える