Ver Mensaje Individual
  #17 (permalink)  
Antiguo 27/08/2010, 16:51
dhamaso
 
Fecha de Ingreso: mayo-2009
Mensajes: 53
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: cortar cadenas php

Al final lo resolvi de una manero muy poco comun, pero me funciono gracias a todos por ayudarme ahy va el codigo por si a alguien le sirve:

Código PHP:
     $file fopen ($ruta"r");
        
$separador "~~";//lo utilizo como separador por que es muy dificil que en una cadena normal vengan estos caracteres
        
$delimitador "/n";
        
$c=0;
        
$vals="";
        
$comillas "\"";
        
$coma ",";
                  
            while((
$data=fgetcsv($file,2048,$separador,$delimitador))!==false){
               if(
$c!=0){//la primer fila son los titulos de las columnas
                
$datos[$c] = $data;
                
$comillasdoblesmascoma='""';
                
$espaciosnblanco "~~dhamaso~~";
                
$fil str_replace(",,",',"",',$datos[$c]);//parche para cuando no trae comillas y viene asi por ejemplo en alguna columna --> (,,)  esto pasa por que no generaron el archivo separado por comas bien (,"F",) si no --> (,F,)
                
$fila str_replace($comillasdoblesmascoma,$espaciosnblanco,$fil);
                
$fila preg_replace_callback('/(?<=,")(.*?)(?=")/'create_function('$e''return str_replace(",", "#coma#", $e[1]);'), $fila);       

                  
$vals.="(";
                  
$registro explode($coma,$fila[0]);
                  
$i 0;
                  foreach(
$registro as $row){
                        if(
ereg($comillas,$row)){//si el campo viene con comillas
                              
if(ereg("#coma#",$row)){
                                   
$row str_replace("#coma#",",",$row);
                                   
$vals.=$row;
                                   
$vals.=$coma;
                              }else{
                                   
$vals.=$row;
                                   
$vals.=$coma;
                              }
                        }
                        else{
//si el campo viene sin comillas o es ~~dhamaso~~
                              
if(ereg("~~dhamaso~~",$row)){
                                   
$row =   str_replace("~~dhamaso~~",$comillasdoblesmascoma,$row);
                                   
$vals.=$row;
                                   
$vals.=$coma;
                               }else{
                                   
$vals.=$comillas;
                                   
$vals.=$row;
                                   
$vals.=$comillas;
                                   
$vals.=$coma;
                               }
                        }
                        
$i++;
                  }
                  
$vals substr($vals,0,-1);
                  
$vals.="),";                
                  }
                  
$c++;
              }

              
$vals substr($vals,0,-1);
              
$msg "";
              
$msgerror "Error al Ejecutar Instruccion";                                            
              
$query "REPLACE INTO ".$tabla."(".$campos.") VALUES ".$vals."";//uso el replace en lugar del insert por que esta instruccion me sirve para verificar si ya existe el id del registro clave, si es asi hago un update y no un insert
              
$res sql_query($query,$db);

              if(
ereg($msgerror,$res)){
                
$msg.=$res;
              }else{
                
$msg.="Se aplicaron los cambios correctamente...";
              }

              echo(
$msg);

   
fclose ($file);