fputcsv enclosure

Eléphanteau du PHP | 13 Messages

08 juin 2024, 14:12

Bonjour, je rencontre un problème avec le paramètre de fputcsv "enclosure" si je mets rien ou ceci "\"", j'ai un guillemet en début en fin de ligne, si je mets ceci " " j'ai un espace en début et fin de linge et à l'intérieur de la ligne les espaces sont doublé.

j'ai surement loupé quelques chose.

voici le code
<?php

 /* Fichier à supprimer */
   $fichier = "termine.csv";

 if( file_exists ($fichier))
     unlink( $fichier ) ;

$filename = "all.csv";
$fileRead = fopen($filename, 'r');
$fileWrite = fopen("termine.csv", "w");
$sep = "|";

  if (!$fileRead || !$fileWrite) {
    echo "Erreur d'ouverture du fichier de lecture et/ou d'écriture avec $filename.";
   
  }
  
      
  fputs($fileWrite,  $data= chr(0xEF) . chr(0xBB) . chr(0xBF));

  while (($data = fgetcsv($fileRead, 0, "|")) !== FALSE) {

  
  
   // le commencement des colonne est 0]);
    fputcsv($fileWrite, array(. $data[54].  $sep. $data[57]. $sep . $data[28]  . ".jpg" ) ,"|", "\"", "\\", "\n");
	
  }

  fclose($fileWrite);
  fclose($fileRead);

echo "copie terminée merci"; 
  ?>
en gros une ligne donne ceci.
"SUISSE|10BR15560R150T-5050|3286341380019|43|74,77|BRIDGESTONE|155/60R 15 74T TL T-005|non|été|155|60|15|74|T|TURANZA T005||C|A|070B|5,7|6263.jpg"
merci d'avance pour votre aide

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

08 juin 2024, 16:29

Bonjour,

Tu renseignes mal le 2ème paramètre de fputcsv()
Regarde l'exemple de la doc, ça doit être un tableau de tableau, c'est à dire un tableau de chaque ligne et pour chaque ligne un tableau de chaque champ.
https://www.php.net/manual/en/function.fputcsv.php
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 13 Messages

09 juin 2024, 04:24

Bonjour merci pour votre réponse, malgré la doc je n'ai pas compris un tableau de tableau.
cependant le 2ème paramètre "\t", me donne un bon résultat et le fichier csv est maintenant utilisable, si je trouve pas mieux je m'en contenterai.