Bueno,
si ES CIERTO que solo puedes tener 1 espacio entre " y " esta va bien:
Código PHP:
$array = preg_split("/(\s+)(?!([^\s]+?)\")/",$text);
Si no hay que jugar un poco mas (para mi porque no encuentro otra regular expression que pueda ir)
Código PHP:
$_1linea = '2 7 4 5 3 1 0 0 1 "Red App le" 1 0 2 20 0 1';
$final_line = '';
$open = false;
$reg_expr = "/(.*?)((\")|$)/is";
preg_match_all($reg_expr, $_1linea, $lines, PREG_SET_ORDER);
foreach($lines as $line) {
if(preg_match("/\"/", $line[2]) && !$open) { //line conteins an "
$part = $line[1]."\"";
$open = true;
}
elseif(preg_match("/\"/", $line[2]) && $open) {
$part = $line[1]."\"";
$part = preg_replace("/ /", " ", $part);
$open = false;
}
elseif(!empty($line[1])) $part = $line[1];
else $part = '';
$final_string .= $part;
}
$_1linea = $final_string;
$array = preg_split('/\s+/',$_1linea);
//luego si monstras en html pueedes tenerlo asì, si no:
foreach($array as $k=>$v) $array[$k] = str_replace(" ", " ", $v);
print_r($array);
Chao!!