Изначально использовал preg_replace, но с апдейтом php пришлось перейти на preg_replace_callback. Соответственно возникла проблема, в preg_replace можно было без проблем добавить переменную, так как она не используется в виде функции при замене, но как описать переменную в preg_replace_callback? Пример:
$param='TEXT';
$cont='hello world</body123>';
$cont=preg_replace_callback('/<\/body(.*?)>/i',function($matches) { return "$param\n</body$matches[1]>\n"; },$cont, 1);
echo $cont;
Возникет ошибка Notice: Undefined variable: param
Как правильно добавить переменную $param в замену?
Изучайте язык, читайте документацию:
Анонимные функции
Анонимные функции, также известные как замыкания (closures), позволяют создавать функции, не имеющие определенных имен. Они наиболее полезны в качестве значений callback-параметров, но также могут иметь и множество других применений.
Замыкания могут также наследовать переменные из родительской области видимости. Любая подобная переменная должна быть объявлена в конструкции use. Начиная с PHP 7.1, эти переменные не должны включать superglobals, $this и переменные с теми же именами, что и параметры функции.
Пример #3 Наследование переменных из родительской области видимости
$message = 'привет';
$example = function () use ($message) {
var_dump($message);
};
Сборка персонального компьютера от Artline: умный выбор для современных пользователей