Non hai appena detto che preg_split() funziona alla grande? Non ho capito cosa succede, array_revers() te li rimette?
Cerca di spiegarti in maniera chiara, ad esempio: uso preg_split() che mi toglie correttamente i valori vuoti, poi uso array_reverse() e succede questo e quello.
Mi parli di array_reverse() e poi dici "non mi elimina i null i 0 etc" secondo te cosa dovrei capire?