$result = preg_replace(
"/{([<>])([a-zA-Z0-9_]*)(?{0,1})([a-zA-Z0-9_]*)}(.*){\1/\2}/iseU",
"CallFunction('\1','\2','\3','\4','\5')",
$result
);
The above code gives a deprecation warning after upgrading to PHP 5.5:
Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead
How can I replace the code with preg_replace_callback()
?
You can use an anonymous function to pass the matches to your function:
Apart from being faster, this will also properly handle double quotes in your string. Your current code using
/e
would convert a double quote"
into"
.