This question already has an answer here:
I'm trying to update some code that is 20 years old to be compatible with php 5.6. One of the major changes I'm facing is the deprecation of "/e" modifier in preg_replace.
For most of them, I just replaced it by preg_replace_callback, removed "/e" and used a function as a second arg.
But I'm facing a case where it doesn't work and after a lot of things tried, I'm still not able to reproduce how it was working before.
function _munge_input($template) {
$orig[] = '/<\?plugin.*?\?>/se';
$repl[] = "\$this->_mungePlugin('\\0')";
$orig[] = '/<\?=(.*?)\?>/s';
$repl[] = '<?php $this->_print(\1);?>';
return preg_replace($orig, $repl, $template);
}
I tried to replace $repl by :
function ($matches) use ($repl) {
return $repl;
}
(or even to include the $repl assignment directly in the function)
with the first $repl assignment modified :
$repl[] = "\$this->_mungePlugin('$matches[0]')";
But it still doesn't work.
Thanks for the help.
</div>