検証0


	$str0 = "echo 'マンモス'; ";
	eval($str0);
マンモス

検証1

eval実行する文字列にPHPコードやHTMLコードが混在している場合。

	$str = "動物名:<?php echo 'アフリカゾウ'; ?><hr>";
	eval(' ?>'.$str.'<?php ');
動物名:アフリカゾウ

検証2

evalの外で宣言している変数をeval内で実行する

	$animal_name= 'インド象';
	$str2 = "動物名:<?php echo ¥$animal_name; ?><br>";
	eval(' ?>'.$str2.'<?php ');
動物名:インド象

検証2.1

evalで実行する文字列を「"」で括った場合と、「'」で括った場合を検証する。

	$animal_name= 'インド象';
	$str2 = "動物名:<?php echo ¥$animal_name; ?><br>";
	eval(' ?>'.$str2.'<?php ');
	$str2 = '動物名:<?php echo $animal_name; ?><hr>';
	eval(' ?>'.$str2.'<?php ');
動物名:インド象
動物名:インド象

検証3

eval内で宣言されている変数を、eval外で参照してみる。

	$str3 = "<?php ¥$nauman='ナウマンゾウ<hr>'; ?>";
	eval(' ?>'.$str3.'<?php ');
	echo $nauman;
ナウマンゾウ

検証4

eval内でエラーが起きたときのエラー情報をキャッチする。

<?php 
	$str4 = "
		<?php
			¥$a='大きな';
			¥$b='ゾウは';
			¥$c= 10 / 0; // ワザとエラーにする。
			¥$d='m あります。';
			echo ¥$a . ¥$b . ¥$c . ¥$d;
		?>
		";	
	echo $str4;
	 $response = @eval(' ?>'.$str4.'<?php ');
	if (error_get_last()){
		echo '<div style="color:red">eval内のエラーです<br>';
		print_r(error_get_last());
		echo '</div>';
	}
?>
大きなゾウはINFm あります。
eval内のエラーです
Array ( [type] => 2 [message] => Division by zero [file] => /home/amaraimusi/www/sample/php/a020/eval_demo/eval_demo.php(133) : eval()'d code [line] => 5 )