preg_split string para multidimensional array

Olá, apenas estou procurando alguma ajuda, já que fiquei preso

Eu tenho duas cordas:

C:\Users\Bob\My Documents /Users/Bob/Documents 

Isso é superado

 preg_split('/(?<=[\/\\\])(?![\/\\\])/', $string) 

que retorna

 Array ( [0] => C:\ [1] => Users\ [2] => Bob\ [3] => My Documents ) Array ( [0] => / [1] => Users/ [2] => Bob/ [3] => Documents ) 

eu preciso

 Array ( [C:\] => Array ( [Users] => Array ( [Bob] => Array ( [My Documents] => array() ) ) ) ) Array ( [/] => Array ( [Users] => Array ( [Bob] => Array ( [Documents] => array() ) ) ) ) 

E, finalmente, mesclado para

 Array ( [C:\] => Array ( [Users] => Array ( [Bob] => Array ( [My Documents] => array() ) ) ) [/] => Array ( [Users] => Array ( [Bob] => Array ( [Documents] => array() ) ) ) ) 

(corretamente mesclado, não apenas anexado, então, se outra seqüência for iniciada com C:\Users\Dan então apareceria na “3ª Dimensão”. array_merge_recursive() ?)

Basta pegar os arrays retornados por preg_split() e criar sua estrutura de tree fora deles:

 $tree = array(); foreach ( $strings as $string ) { $path = preg_split( '/(?<=[\/\\\])(?![\/\\\])/', $string ); $ptr =& $tree; foreach ( $path as $elem ) { if ( ! array_key_exists( $elem, $ptr ) ) $ptr[ $elem ] = array(); $ptr =& $ptr[ $elem ]; } } 

Provavelmente você está melhor usando o pathinfo ()

http://uk.php.net/manual/en/function.pathinfo.php

E realpath () http://uk.php.net/manual/en/function.realpath.php

Eu suponho que você está tentando mapear um diretório * nix para um Windows?