¿Cómo se utilizan referencias anteriores a PCRE en PHP?
Pregunta
Leo esto Página PHP RegEx, pero o me estoy perdiendo algo, estoy leyendo mal algo o no funciona como dicen.Supongo que es uno de los dos primeros.
$str = preg_replace("([|]\d*)", "\1;", $str);
Solución
Su expresión regular debe seguir la sintaxis de Perl, lo que significa que debe comenzar y terminar con el mismo carácter (con algunas excepciones).Además, la referencia anterior debe comenzar con una doble barra para evitar el doble escape de PHP.Esto debería funcionar (con una prueba rápida):
$str = "asdfasdf |123123 asdf iakds |302 asdf |11";
$str = preg_replace("/([|]\d*)/", "\\1;", $str);
echo $str; // prints "asdfasdf |123123; asdf iakds |302; asdf |11;"
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow