php explode: divide la cadena en palabras usando un delimitador de espacio

$str = "This is a    string";
$words = explode(" ", $str);

Funciona bien, pero los espacios todavía van en la matriz:

$words === array ('This', 'is', 'a', '', '', '', 'string');//true

Preferiría tener palabras solo sin espacios y guardar la información sobreel numero de espacios separar.

$words === array ('This', 'is', 'a', 'string');//true
$spaces === array(1,1,4);//true

Recien agregado:(1, 1, 4) significa un espacio después de la primera palabra, un espacio después de la segunda palabra y 4 espacios después de la tercera palabra.

¿Hay alguna manera de hacerlo rápido?

Gracias.

Respuestas a la pregunta(6)

Su respuesta a la pregunta