php explode: dividir string em palavras usando um delimitador de espaço

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

Funciona bem, mas os espaços ainda vão para a matriz:

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

Eu preferiria ter palavras apenas sem espaços e manter as informações sobreo número de espaços separado.

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

Acabou de adicionar:(1, 1, 4) significa um espaço após a primeira palavra, um espaço após a segunda palavra e 4 espaços após a terceira palavra.

Existe alguma maneira de fazer isso rápido?

Obrigado.

questionAnswers(6)

yourAnswerToTheQuestion