die
exit
その他の関数
PHP Manual

# eval

(PHP 4, PHP 5)

eval — 文字列を PHP コードとして評価する

### 説明

mixed eval ( string `$code` )

指定した `code` を PHP コードとして評価します。

警告

eval() は非常に危険な言語構造です。 というのも、任意の PHP コードを実行できてしまうからです。 これを使うことはおすすめしません。 いろいろ検討した結果どうしても使わざるを得なくなった場合は、細心の注意を払って使いましょう。 ユーザーから受け取ったデータをそのまま渡してはいけません。 渡す前に、適切な検証が必要です。

### パラメータ

`code`

  有効な PHP コード。これを評価します。

  PHP 開始タグを含めてはいけません。つまり、 '<? echo "Hi!"; >' ではなく 'echo "Hi!";' を渡さなければならないということです。 適切に PHP タグを使えば、PHP モードからいったん抜けてもう一度 PHP モードに戻るということも可能です。 たとえば、このようになります。 'echo "PHP モード!"; ?>HTML モード!<? echo "ふたたび PHP モード!";'

  それはさておき、渡すコードは PHP として有効な形式でなければなりません。 つまり、すべての文はセミコロンで終了する必要があるということです。 たとえば 'echo "やあ!"' はパースエラーになりますが、 'echo "やあ!";' は動作します。

  return 文は、コードの評価をただちに終了します。

  コードの実行は、 eval() を呼び出したスコープ内で行われます。 したがって、 eval() の中で定義したり変更したりした変数は eval() を抜けた後でも参照可能です。

### 返り値

評価されるコードの中で return が コールされない限り、 eval() は `NULL` を返します。 return がコールされた場合は、その値を返します。 評価されるコードの中でパースエラーが発生した場合は、 eval() は `FALSE` を返します。 それ以降のコードは通常通り実行されます。 eval() の中でのパースエラーを set_error_handler() で捕捉することはできません。

### 例

例1 eval() の例 - 簡単なテキストのマージ

`<?php
$string = 'cup';
$name = 'coffee';
$str = 'This is a $string with my $name in it.';
echo $str. "\n";
eval("\$str = \"$str\";");
echo $str. "\n";
?>`

上の例の出力は以下となります。

    This is a $string with my $name in it.
    This is a cup with my coffee in it.

### 注意

> 注意: これは、関数ではなく 言語構造のため、可変関数 を用いて コールすることはできません。

ヒント

ブラウザに直接結果を出力する すべてのものと同様に、出力制御関数 を使用してこの関数の出力をキャプチャーし、(例えば)文字列 (string)に保存することが可能です。

> 注意:

> 評価されるコードの中で致命的なエラーが発生した場合は、 スクリプト全体が終了します。

### 参考

- call_user_func() - 最初の引数で指定したコールバック関数をコールする

die
exit
その他の関数
PHP Manual