Parser un fichier csv

Parser un fichier csv - PHP - Programmation

Marsh Posté le 29-04-2006 à 12:31:05    

Bonjour j'aimerais bien parser un fichier possédant toujours un meme nombre de champs par enregistrement, par ligne ...  
Chaque champs est séparé par un : (oui, je sais ce n'est pas un csv, coma separated value)
 
par exemple :


champs10:champs20:champs30
champs11:champs21:champs31
champs12:champs22:champs32
champs13:champs23:champs33


 
j'ai essayé d'utiliser fscanf  
 
 

$handle = fopen ("source.txt","r" );
  while ($userinfo = fscanf ($handle, "%s:%s:%s\n" ))  
  {
   list ($name, $profession, $countrycode) = $userinfo;
   //... traitement des données
   echo "<br>".$profession;
  }
  fclose($handle);


 
j'ai suivi l'exemple de http://www.php.net/manual/fr/function.fscanf.php
lorsque le séparateur de champs est une tabulation, cela fonctionne nickel mais lorsque c'est :, cela ne fonctionne plus. :(

Reply

Marsh Posté le 29-04-2006 à 12:31:05   

Reply

Marsh Posté le 29-04-2006 à 13:42:08    

fscanf($handle, '%[^:]:%[^:]:%[^\n]')


Message édité par sielfried le 29-04-2006 à 13:50:29

---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 29-04-2006 à 14:27:07    

merci mille fois  
 
oula, je pensais pas que l'on pouvait du regex sur un simple fscanf.

Reply

Marsh Posté le 29-04-2006 à 18:48:20    

weed a écrit :

Bonjour j'aimerais bien parser un fichier possédant toujours un meme nombre de champs par enregistrement, par ligne ...  
Chaque champs est séparé par un : (oui, je sais ce n'est pas un csv, coma separated value)
 
par exemple :


champs10:champs20:champs30
champs11:champs21:champs31
champs12:champs22:champs32
champs13:champs23:champs33


 
j'ai essayé d'utiliser fscanf  
 
 

$handle = fopen ("source.txt","r" );
  while ($userinfo = fscanf ($handle, "%s:%s:%s\n" ))  
  {
   list ($name, $profession, $countrycode) = $userinfo;
   //... traitement des données
   echo "<br>".$profession;
  }
  fclose($handle);


 
j'ai suivi l'exemple de http://www.php.net/manual/fr/function.fscanf.php
lorsque le séparateur de champs est une tabulation, cela fonctionne nickel mais lorsque c'est :, cela ne fonctionne plus. :(


 

while ($userinfo=fgets($handle))
{
      list($name, $profession, $countrycode)=explode(":", $userinfo);
}



---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Marsh Posté le 29-04-2006 à 23:01:54    

pourquoi réinventer la roue :
 
http://fr.php.net/fgetcsv

Reply

Marsh Posté le 30-04-2006 à 12:14:45    


 
Pas "réinventer", juste "refabriquer" [:aloy]
Parce que pour 3 lignes, ça ne pose pas de pb. Toute la difficulté est de savoir à quel moment il vaut mieux arrêter de coder et passer par un outil particulier
 
PS: Le lien ne fonctionne actuellement pas...


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed