¿Por qué el siguiente código:¿Por qué preg_replace con /(.*)/ repite parte de la cadena?
<?php echo preg_replace("/(.*)/", "$1.def", "abc");
salida abc.def.def
en lugar de abc.def
?
Me interesa saber por qué ocurre la repetición.
El uso de /(.+)/
o /^(.*)$/
funciona como se esperaba, pero no estoy buscando una solución, simplemente haciendo una pregunta (aunque estos patrones pueden estar relacionados con la respuesta).
Tinker con una versión en vivo here.
Caso de prueba más simple - [' Php echo preg_replace (" /.*/ "," b "," a ");'] (http://codepad.org/Ol3Bz4Zo) – Eric
Relacionado: http://stackoverflow.com/questions/8604286/java-regex-anomaly – kennytm