non ne sono sicuro, ma sembra che la funzione preg_match prenda come terzo parametro un array che conterra' le occorrenze trovate. potresti provare poi ad analizzare l'array

esempio dal manuale

preg_match("/^(http:\/\/)?([^\/]+)/i",
"http://www.php.net/index.html", $matches);

e poi ti ritroveresti riempito l'array $matches che potrai analizzare con un ciclo for.

ciao