No código:
$string = '2007-12-31'; $regex = '~(\d{4})-(\d{2})-(\d{2})~'; $novoTexto = '$3-$2-$1'; $resultado = preg_replace($regex, $novoTexto, $string);
Não entendi porque os grupos foram substituídos pelas variáveis $3, $2, $1. A função por acaso transforma os grupos em variáveis automaticamente?