Hello fellow netheads!
I'm having issues with updating some old function to preg_replace_callback. Edit: what am I doing wrong?
This is my first (preg_replace/deprecated) function:
if ($handle) {
while (!feof($handle)) {
$buffer = fgets($handle, 4096);
@eval('$templ = new '.TEMPL_CLASS.';');
$buffer = preg_replace("#§([a-z0-9-_]+)\.?([a-z0-9-_]+)?#ie","\$templ->\\1(\\2)",$buffer);
$out .= $buffer;
}
fclose($handle);
}
Second function (this is my attempt at converting to preg_replace_callback):
if ($handle) {
while (!feof($handle)) {
$buffer = fgets($handle, 4096);
@eval('$templ = new '.TEMPL_CLASS.';');
$buffer = preg_replace_callback(
'#§([\w-]+)\.?([\w-]+)?#',
function ($m) {
@$templ->$m[1]($m[2]);
},
$buffer
);
$out .= $buffer;
}
fclose($handle);
}
OLD! M42's answear fixed the follow error:
Warning: preg_replace_callback(): Modifier /e cannot be used with replacement callback in /var/www/inc/engine.php on line 52
); <-- line 52
$out .= $buffer;
Edit: I dont know how to handle the render part of this..
$buffer = preg_replace("#§([a-z0-9-_]+)\.?([a-z0-9-_]+)?#ie","\$templ->\\1(\\2)",$buffer);
Right now it is rendering a blank page.. I guess the error is in
return templ($m[1], $m[2]);