PHP
 Computer >> コンピューター >  >> プログラミング >> PHP

PHPのeval()関数とは?使い方と注意点をわかりやすく解説

PHPのeval()関数は、渡された文字列をPHPコードとして評価(実行)するための関数です。文字列の中身を動的にコードとして処理できるため、柔軟なプログラミングが可能になりますが、扱い方を誤ると重大なセキュリティリスクにつながる点にも注意が必要です。

構文

eval(code)

パラメータ

  • code − 実行したいPHPコードを含む文字列を指定します。

戻り値

eval()関数の戻り値は以下の通りです。

  • コード文字列内で return 文が呼び出されない場合は null を返します。
  • return 文が呼び出された場合は、その return に渡された値を返します。
  • コード文字列にパースエラー(構文エラー)が含まれている場合は false を返します。

使用例

次のコードでは、変数を含む文字列を eval() 関数で評価し、変数が展開された結果を出力しています。

<?php
   $one = "Demo";
   $two = "text";
   $res = 'This is $one $two!';
   echo $res . "<br>";
   eval("\$res = \"$res\";");
   echo $res;
?>

出力結果

上記コードの実行結果は以下のようになります。

This is $one $two!
This is Demo text!

最初の出力では変数名がそのまま表示されますが、eval() によって文字列がPHPコードとして評価された後は、$one$two の中身が展開されて出力されていることがわかります。

使用時の注意点

eval()関数は非常に強力な反面、ユーザーからの入力など信頼できないデータをそのまま渡すと、任意のコードを実行される「コードインジェクション」の危険があります。利用は最小限にとどめ、どうしても使う場合は入力値の検証やサニタイズを徹底しましょう。多くの場合、可変関数や call_user_func() など、より安全な代替手段で目的を達成できます。

  1. PHPのlog10()関数とは?常用対数の計算方法と具体例をわかりやすく解説

    定義と使用方法log10() 関数は、数値の常用対数(底が10の対数)を計算するための関数です。常用対数は「10を底とする対数」とも呼ばれ、log10x を求める際に使用されます。自然対数との間には、次のような関係式が成り立ちます。log10x = logex / loge10この式に基づけば、たとえば次のように計算できます。log10100 = loge100 / loge10 = 2PHPでは、この常用対数の計算を log10() 関数が担っています。構文log10 ( float $arg ) : floatパラメータ番号パラメータと説明1arg常用対数(底10の対数)を計算したい数値を

  2. PHPのeval()関数とは?使い方と注意点をわかりやすく解説

    PHPのeval()関数は、渡された文字列をPHPコードとして評価(実行)するための関数です。文字列の中身を動的にコードとして処理できるため、柔軟なプログラミングが可能になりますが、扱い方を誤ると重大なセキュリティリスクにつながる点にも注意が必要です。 構文 eval(code) パラメータ code − 実行したいPHPコードを含む文字列を指定します。 戻り値 eval()関数の戻り値は以下の通りです。 コード文字列内で return 文が呼び出されない場合は null を返します。 return 文が呼び出された場合は、その return に渡された値を返します。 コード文字列にパー