HIa
Las expresiones regulares no son própias de PHP como ya he comentado alguna vez .. Si buscas por "expresiones regulares en perl" veras que encuentras más información al respecto.
La función que usas mi_link() es muy "primitiva" .. osese, el algoritmo que usas solo miras que una "palabra" (se entiende por palabra a algo que esté separado por espacios) empiece por
http:// .. o las otras cadenas que has puesto .. Pero, no valida una sintax real de un URL completo.
El caso, que para implementar el resto de condiciones que validen a un URL deberías emplear muchhhhaaaa mas lógica .. cosa que con Expresiones regulares ya estaras viendo como en una sóla línea abarcas un buen número de condiciones ...
Un saludo,