Задача стояла именно такая. Если нужно работать с произвольными ссылками, то да, можно использовать функцию preg_replace. Или даже установить какой-нибудь движок для построения DOM и там уже все делать.
Ставьте движок для работы с DOM как описано выше. Еще есть альтернатива использовать JS, только не совсем уверен, что это уместно в Вашем случае (JS сработает после формирования html-кода).