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);