関数・クラス解説
eval
version:PHP 4, PHP 5, PHP 7 (公式)文字列を PHP コードとして評価する
公式リファレンス
書式
eval ( string $code ) : mixed
説明
指定した code を PHP コードとして評価します。
警告eval() は非常に危険な言語構造です。 というのも、任意の PHP コードを実行できてしまうからです。 これを使うことはおすすめしません。 いろいろ検討した結果どうしても使わざるを得なくなった場合は、細心の注意を払って使いましょう。 ユーザーから受け取ったデータをそのまま渡してはいけません。 渡す前に、適切な検証が必要です。
パラメータ
- code
- 有効な PHP コード。これを評価します。 PHP 開始タグを含めてはいけません。つまり、 '
echo "Hi!";
' ではなく 'echo "Hi!";' を渡さなければならないということです。 適切に PHP タグを使えば、PHP モードからいったん抜けてもう一度 PHP モードに戻るということも可能です。 たとえば、このようになります。 'echo "PHP モード!"; ?>HTML モード!<?php echo "ふたたび PHP モード!";' それはさておき、渡すコードは PHP として有効な形式でなければなりません。 つまり、すべての文はセミコロンで終了する必要があるということです。 たとえば 'echo "やあ!"' はパースエラーになりますが、 'echo "やあ!";' は動作します。 return 文は、コードの評価をただちに終了します。 コードの実行は、eval() を呼び出したスコープ内で行われます。 したがって、eval() の中で定義したり変更したりした変数は eval() を抜けた後でも参照可能です。
返値
評価されるコードの中で return が コールされない限り、eval() は NULL を返します。 return がコールされた場合は、その値を返します。 PHP 7 以降、評価されるコードの中でパースエラーが発生した場合は、 eval() は ParseError 例外をスローします。 PHP 7 より前のバージョンでは、この場合に eval() は FALSE を返していました。 それ以降のコードは通常通り実行されます。 eval() の中でのパースエラーを set_error_handler() で捕捉することはできません。
注意
注意: これは、関数ではなく言語構造のため、可変関数 を用いてコールすることはできません。ヒントブラウザに直接結果を出力するすべてのものと同様に、出力制御関数を使用してこの関数の出力をキャプチャーし、(例えば)文字列(string)に保存することが可能です。
注意: 評価されるコードの中で致命的なエラーが発生した場合は、 スクリプト全体が終了します。
サンプル
例1 eval() の例 - 簡単なテキストのマージ
$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.
参考
ワード検索
※入力キーワードが、関数名・説明文・タグに含まれるものを検索関数名アルファベット別
最終更新一覧
●stristr
大文字小文字を区別せず文字列を検索し、ヒット箇所以降(あるいは以前)の文字列を返却
●stripslashes
バックスラッシュでエスケープされた文字列から、バックスラッシュを取り除く
●stripos
大文字小文字を区別せずに文字列が最初に現れる位置を取得する
●stripcslashes
addcslashes() でクォートされた文字列をアンクォートする
●strip_tags
文字列から HTML と PHP のタグを除去して返却
●strcspn
指定した文字が最初に現れる位置を調べる
●strcoll
ロケールに基づいて2つの文字列を比較し同じか(あるいは大小)を判定する
●strcmp
2つの文字列を比較し同じか(あるいは大小)を判定する
●strchr
strstr() のエイリアス
●strcasecmp
2つの文字列を比較(大文字小文字を区別せず同じとみなす)
カテゴリー一覧
PHP の振る舞いの変更
音声フォーマットの操作
認証サービス
コマンドライン関連
圧縮およびアーカイブ
暗号
データベース関連
日付および時刻関連
ファイルシステム
自然言語および文字エンコーディング
画像処理および作成
メール関連
数学
テキスト以外の MIME 型
プロセス制御
その他の基本モジュール
その他のサービス
検索エンジン用の拡張モジュール
サーバー固有のモジュール
セッション関連
テキスト処理
変数・データ型関連
ウェブサービス
Windows 用のモジュール
XML 操作
GUI用の拡張モジュール