benya, не знаю как на счет велосипеда, но задача в общем-то довольно простая, чтобы реализовывать ее множеством невелосипедных путей:
1) Регулярным выражением
примерного вида
Код:
![Выделить весь код](images/misc/selectcode.png)
<a.*?href=['"]?((?:(?:https?|ftp|file)://)?[-A-Z0-9+&@#/%?=~_|!:,.;]*[-A-Z0-9+&@#/%=~_|])['"]?
(с i модификатором) выдираем ссылки из текста странички. Получам массив строк, являющихся значениями атрибута href всех ссылок.
2) Применяем к массиву функцию
array array_unique(array) и получаем массив с убранными повторяющимися ссылками.
По сути это все, разве что будет дополнительные моменты по разбору могущих возникнуть нюансов.