Bonsoir
Les 2 expressions sont assez différentes preg_replace_callback fait appel à une fonction (qui doit forcément être définie).
Pour faire simple les variables de l'expression rationnelle standard, soit les parenthèses capturantes ($1, $2...) sont accessibles sous forme de tableau ($matches[1], matches$[2]...)
Regardes l'exemple 2 du manuel :
http://php.net/manual/fr/function.preg-replace-callback.php