正規表現について質問した別の質問に対して、preg_replace_callback
関数(PHP regex templating - find all occurrences of {{var}})を問題の解決策として使用するように指示されました。これはうまく動作しますが、コールバック関数の変数スコープに関する質問があります。PHPコールバック関数の可変スコープ
テキストを解析する関数はクラスの一部ですが、使用するデータは関数内にローカルに格納されます。しかし、私は私のコールバック関数内からこのデータにアクセスすることができないことがわかりました。ここで私はこれまで試してみました方法があります。
- は、コールバックを実装
- (PHPは致命的なエラーを持っている、動作しない)コールバックパラメータとして
'$this->callback_function'
を渡し、プライベートクラスの関数としてコールバックを実装します私は、好ましくは、グローバルを使用せずに、私のコールバック関数内$newData
にアクセスすることができますどのようにようにそれを使用する関数の内部(以下の例を参照)が、これは動作しませんでしたどちらか$newData
がcallback_function
内の範囲ではないので、任意のアイデア?
多くのありがとうございます。
public function parseText($newData) {
...
function callback_function($matches) {
... //something that uses $newData here
}
...
preg_replace_callback('...', 'callback_function', $textToReplace);
}
こんにちは、これは私が後にしたものです。 –