質問

私は閉鎖(匿名)関数を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 "";
      }'
    )
);
.

未テスト、もちろん。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top