Suppongo che la preg_replace() che viene eseguita per prima, quella per le email, gli rimpiazzi anche parte di eventuali link, rendendoli poi irriconoscibili alla seguente preg_replace().
In tal caso però bisognerebbe rivedere la reg exp delle email che sarebbe sbagliata.