eval ですいませんが。
<?php $r = @eval('invalid code') ; echo $r === FALSE ? 'パースエラー' : 'Ok.' ;
php コマンドを呼び出す事が許されるのであれば、-l もしくは --syntax-check で確認できます。
PHP: オプション - Manual
$ php -l test.php No syntax errors detected in test.php
Web アプリケーションの機能として実装するのであれば、system() 関数を使って、引数でもらえる終了ステータスが 0 であれば OK、といった判断が出来ると思います。
PHP: system - Manual
▽3
●
kodairabase ●50ポイント ベストアンサー |
PECLが利用できれば、runkit_lint関数で構文チェックができます。
http://php.net/manual/ja/function.runkit-lint.php
素のままのPHPなら、以下のようにしてできます。
<?php $MyErrorNo = 0; function myErrorHandler($errno, $errmsg, $filename, $linenum, $vars) { global $MyErrorNo; $MyErrorNo = $errno; echo "$errmsg ($errno) occured."; } // $strを評価する // エラーがあればエラー番号を返す。エラーが無ければ0。 function my_lint($str) { global $MyErrorNo; set_error_handler('myErrorHandler'); error_reporting(E_ALL); @eval($str); restore_error_handler(); return $MyErrorNo; } //メインプログラム $str = '$x = 8 / 0;'; my_lint($str); ?>