PREG_REAST_CALLBACKのパラメータとしてのPHPクロージャー機能
-
12-11-2019 - |
質問
私は閉鎖(匿名)関数を2ndパラメータとして取るpreg_replace_callback
を持っていて、ローカルで完全に問題ありませんが、ライブ環境に展開するとエラー=>サーバーエラー500になります。閉鎖を削除するとそれはうまくいきます。
$regExPattern = '/\<%(?<content>.*?)%\>/';
$template = preg_replace_callback($regExPattern, function ($matches) use ($dataItem) {
if(isset($dataItem[trim($matches['content'])])) {
return $dataItem[trim($matches['content'])];
}
else {
return '';
}
}, $template);
.
提案はどのようにしてこの問題を解決する方法もあります。コールバック関数内に$ DataItemを使用し、それをpreg_replace_callback
に渡す必要があります。
私の開発環境はコードイグナイターです。
解決
匿名関数はPHP 5.3以降でのみ機能します。代わりにcreate_function()
を使用できます。
$regExPattern = '/\<%(?<content>.*?)%\>/';
$template = preg_replace_callback($regExPattern, create_function(
'$matches'
, 'if(isset($dataItem[trim($matches[\'content\'])])) {
return $dataItem[trim($matches[\'content\'])];
}
else {
return "";
}'
)
);
.
未テスト、もちろん。
所属していません StackOverflow