Scusate se intervengo, ma ..... preg_match_all() con una bella espressione regolare no????

Una RegExp del genere dovrebbe andare per riconoscere i link nella stringa passata.

Codice PHP:
$pattern "/^(http|https):\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}'.'((:[0-9]{1,5})?\/.*)?$/i"