Ver Mensaje Individual
  #2 (permalink)  
Antiguo 04/06/2009, 09:47
Avatar de abidibo
abidibo
 
Fecha de Ingreso: mayo-2009
Mensajes: 121
Antigüedad: 17 años, 4 meses
Puntos: 7
Respuesta: preg_split (espacios) con excepción de algunos

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!!