PHPプログラムに関する各種メモ書き

PHP 7.2 で発生する「 Function create_function() is deprecated」エラーに対処する

PHP 7.2 からは create_function が内部でeval()を実行していて、セキュリティ上危ないということで廃止され、エラー表示となります。 そこで以下のようにクロージャで置き換えます。

例:create_function() を クロージャで置き換える

$v = preg_replace_callback('/\[?(https?:\/\/[^ ^ ]+)(:title=([^\]]*))?\]?/',
	create_function('$m', '
		return "<a href=\"{$m[1]}\" target=\"_blank\" >"
		. (isset($m[3]) ? $m[3] : $m[1] )
		. "</a>";
	'),
$v);

   ↓

$v = preg_replace_callback('/\[?(https?:\/\/[^ ^ ]+)(:title=([^\]]*))?\]?/',
	function ($m) {
		return "<a href=\"{$m[1]}\" target=\"_blank\" >" . (isset($m[3]) ? $m[3] : $m[1]) . "</a>";
	},
$v);

クロージャ内に変数を渡す場合は set を使用して渡します。

関連エントリー

No.1292
09/05 09:14

edit

エラー対処