php - Reemplazar obsoleto preg_replace/e con preg_replace_callback
preg-replace preg-replace-callback (1)
Puede usar una función anónima para pasar las coincidencias a su función:
$result = preg_replace_callback(
"//{([<>])([a-zA-Z0-9_]*)(/?{0,1})([a-zA-Z0-9_]*)/}(.*)/{//1////2/}/isU",
function($m) { return CallFunction($m[1], $m[2], $m[3], $m[4], $m[5]); },
$result
);
Además de ser más rápido, esto también manejará adecuadamente las comillas dobles en su cadena. Su código actual usando /e
convertiría una comilla doble "
en /"
.
Esta pregunta ya tiene una respuesta aquí:
$result = preg_replace(
"//{([<>])([a-zA-Z0-9_]*)(/?{0,1})([a-zA-Z0-9_]*)/}(.*)/{//1////2/}/iseU",
"CallFunction(''//1'',''//2'',''//3'',''//4'',''//5'')",
$result
);
El código anterior muestra una advertencia de desaprobación después de actualizar a PHP 5.5:
Obsoleto : preg_replace (): el modificador / e está en desuso, use preg_replace_callback en su lugar
¿Cómo puedo reemplazar el código con preg_replace_callback()
?