Foros del Web » Programando para Internet » PHP »

Consulta archivo CSV

Estas en el tema de Consulta archivo CSV en el foro de PHP en Foros del Web. HOla, una pregunta Como puedo detectar si un archivo csv esta separado por ","o por ";" el codigo que tengo es while ($data = fgetcsv ...
  #1 (permalink)  
Antiguo 08/04/2010, 09:15
 
Fecha de Ingreso: abril-2010
Mensajes: 115
Antigüedad: 14 años, 7 meses
Puntos: 2
Busqueda Consulta archivo CSV

HOla, una pregunta

Como puedo detectar si un archivo csv esta separado por ","o por ";"
el codigo que tengo es

while ($data = fgetcsv ($fp, 1000,",")){
....
}
[/HIGHLIGHT]
y quiero poner un if else para saber a que while se meteria, ejemplo

if($separador=="," ){
while ($data = fgetcsv ($fp, 1000,",")){
....
}
}
elseif($separador==";"){
while ($data = fgetcsv ($fp, 1000,";")){
....
}
}

pero no se como comparar el archivo

ojala y alguien me pueda asesorar
Gracias!!
  #2 (permalink)  
Antiguo 08/04/2010, 09:35
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Consulta archivo CSV

No podés saberlo sin conocer el origen/estructura del archivo.
Imaginate una línea como la siguiente, ¿es separado por comas o por punto y coma?
Código:
palabra1; palabra2, palabra3
Si la estructura del archivo no es tan libre (digamos, sabés que cada línea tendrá x cantidad de campos), podrías intentar adivinar el separador contando cuántos campos obtenés, por ejemplo. Pero en principio si es un archivo cualquiera no veo cómo podrías hacerlo.


Saludos.
  #3 (permalink)  
Antiguo 08/04/2010, 09:44
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: Consulta archivo CSV

Si el archivo está delimitado también por comillas puedes hacerlo así. Pero si no lo hay, te va a suceder lo que indicó AlvaroG

Código CSV:
Ver original
  1. "1;","2","3","4"
  2. "a","b","c;","d"
  3. "1a;","2b","3c","4d"

Código PHP:
Ver original
  1. <?php
  2. $f = fopen('a.csv','r');
  3. $boolean = (count(fgetcsv($f,0,',','"')) > 1 ? true : false);
  4.  
  5. fseek($f,0);
  6.  
  7. if($boolean){
  8.     while($data = fgetcsv($f,0,',','"')){
  9.         echo '<pre>';
  10.         var_dump($data);
  11.         echo '</pre>';
  12.     }
  13. }else{
  14.     while($data = fgetcsv($f,0,';','"')){
  15.         echo '<pre>';
  16.         var_dump($data);
  17.         echo '</pre>';
  18.     }
  19. }
  20. fclose($f);
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos

Última edición por abimaelrc; 08/04/2010 a las 09:49
  #4 (permalink)  
Antiguo 08/04/2010, 11:18
 
Fecha de Ingreso: abril-2010
Mensajes: 115
Antigüedad: 14 años, 7 meses
Puntos: 2
Respuesta: Consulta archivo CSV

Cita:
Iniciado por abimaelrc Ver Mensaje
Si el archivo está delimitado también por comillas puedes hacerlo así. Pero si no lo hay, te va a suceder lo que indicó AlvaroG

Código CSV:
Ver original
  1. "1;","2","3","4"
  2. "a","b","c;","d"
  3. "1a;","2b","3c","4d"

Código PHP:
Ver original
  1. <?php
  2. $f = fopen('a.csv','r');
  3. $boolean = (count(fgetcsv($f,0,',','"')) > 1 ? true : false);
  4.  
  5. fseek($f,0);
  6.  
  7. if($boolean){
  8.     while($data = fgetcsv($f,0,',','"')){
  9.         echo '<pre>';
  10.         var_dump($data);
  11.         echo '</pre>';
  12.     }
  13. }else{
  14.     while($data = fgetcsv($f,0,';','"')){
  15.         echo '<pre>';
  16.         var_dump($data);
  17.         echo '</pre>';
  18.     }
  19. }
  20. fclose($f);
Muchas Gracias abimaelrc
  #5 (permalink)  
Antiguo 08/04/2010, 11:21
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: Consulta archivo CSV

Pero lo que indica AlvaroG es correcto. Verifica bien el archivo, para que veas su estructura.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos

Etiquetas: csv
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:10.