В ответ на другой вопрос, который я задал о регулярных выражениях, мне сказали использовать функцию preg_replace_callback
(PHP regex templating - find all occurrences of {{var}}) в качестве решения моей проблемы. Это отлично работает, но теперь у меня есть вопрос, связанный с переменной областью в функциях обратного вызова.Переменная область для функций обратного вызова PHP
Функция, анализирующая текст, является частью класса, но данные, которые я хочу использовать, хранятся локально в функции. Однако я обнаружил, что я не могу получить доступ к этим данным из моей функции обратного вызова. Вот способы, которыми я пытался до сих пор:
- Реализовать функцию обратного вызова в качестве функции частного класса, передавая
'$this->callback_function'
в качестве параметра обратного вызова (не работает, PHP имеет фатальную ошибку) - Реализовать функцию обратного вызова внутри функции, которая использует его (смотрите пример ниже), но это не сработало, потому что
$newData
не в сферу внутриcallback_function
Любые идеи о том, как я могу получить доступ к $newData
внутри моей функции обратного вызова, предпочтительно без использования глобалам ?
Большое спасибо.
Пример ниже для второй попытки (не форматировать должным образом, когда я положил его после точки пули)
public function parseText($newData) {
...
function callback_function($matches) {
... //something that uses $newData here
}
...
preg_replace_callback('...', 'callback_function', $textToReplace);
}
Эй, спасибо, это именно то, что я был после. –