php preg-replace preg-replace-callback php-5.5

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() ?