salve a tutti, ho un problema

ho una stringa del tipo PROTOCOLLO://USER:PASS@SERVER/PATH e dovrei ottener in variabili separate i dati PROTOCOLLO, USER, PASS, SERVER e PATH

ovviamente ci riesco benissimo "explodendo" la stringa varie volte, ma vorrei riuscirci utilizzando un'espressine regolare x un codice + "pulito"...

ho provato la funzione preg di php, ma non riesco a venirne a capo.. forse sbaglio la sintassi dell'espressione, non lo so, fatto sta che in alcuni casi da errore, in altri l'array è vuoto....

aiutatemi! grazie..