[php->csv] problème de séparateur
Résolu
jeanos
-
le père -
le père -
echo "Bonjour,";
J'ai un fichier .csv généré par php. Jusque là aucun problème sauf que lorsque je met ";" comme séparateur il apparaît dans le csv une virgule. J'ai testé en changeant le ";" par ":"...et il apparaît bien ":".
Voici un extrait de code, pour l'exemple et un extrait du résultat(csv).
//php
$nom_file="stats.csv";//$nom_file="stats".$tdj.".csv";
$champs = array (
"; ; REPORT DE 2008; ; ; ENTREE 2009; ; ; SORTIE 2009 ;; ;;",
"; ; Homme; Femme; Total; Homme; Femme; ; Homme; Femme; Total",
"Ligne 1 - ;",
//=>csv
," "," REPORT DE 2008"," "," "," ENTREE 2009"," "," "," SORTIE 2009 ",," ",,
," "," Homme"," Femme"," Total"," Homme"," Femme"," "," Homme"," Femme"," Total"
"Ligne 1 - ",
Merci si vous avez une idée(et non je veut un ; comme séparateur, ça serait trop simple sinon).
J'ai un fichier .csv généré par php. Jusque là aucun problème sauf que lorsque je met ";" comme séparateur il apparaît dans le csv une virgule. J'ai testé en changeant le ";" par ":"...et il apparaît bien ":".
Voici un extrait de code, pour l'exemple et un extrait du résultat(csv).
//php
$nom_file="stats.csv";//$nom_file="stats".$tdj.".csv";
$champs = array (
"; ; REPORT DE 2008; ; ; ENTREE 2009; ; ; SORTIE 2009 ;; ;;",
"; ; Homme; Femme; Total; Homme; Femme; ; Homme; Femme; Total",
"Ligne 1 - ;",
//=>csv
," "," REPORT DE 2008"," "," "," ENTREE 2009"," "," "," SORTIE 2009 ",," ",,
," "," Homme"," Femme"," Total"," Homme"," Femme"," "," Homme"," Femme"," Total"
"Ligne 1 - ",
Merci si vous avez une idée(et non je veut un ; comme séparateur, ça serait trop simple sinon).
A voir également:
- [php->csv] problème de séparateur
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- Séparateur word - Guide
- Trait de séparation word - Guide
- Retour a la ligne php ✓ - Forum PHP
7 réponses
Bonjour
Si tu nous montrais plutôt le code qui génère ton csv ? Car les ; que tu montres sont dans un array de chaînes, ce qui n'a pas grand rapport avec le fait que le csv soit généré avec des ; ou des ,
Si tu nous montrais plutôt le code qui génère ton csv ? Car les ; que tu montres sont dans un array de chaînes, ce qui n'a pas grand rapport avec le fait que le csv soit généré avec des ; ou des ,
Ah pardon je me suis trompé de bout de code, voila comment je généres le .csv
et
//champs étant l'array plus haut
$fp = fopen($nom_file, 'w') or die();// verif fopen, write et fclose ==OK + mode (ecraser fichier)
foreach ($champs as $line) {
fputcsv($fp, split(';', $line));
}
fclose($fp);
et
//champs étant l'array plus haut
$fp = fopen($nom_file, 'w') or die();// verif fopen, write et fclose ==OK + mode (ecraser fichier)
foreach ($champs as $line) {
fputcsv($fp, split(';', $line));
}
fclose($fp);
Surtout ne pas utiliser implode pour générer du csv. Ça ne marche pas, en particulier si les champs contiennent des ;. Il y a des fonctions faites spécialement pour le csv en PHP et il ne faut utiliser qu'elles.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Tu utilises fputcsv et tu as tout à fait raison.
Par contre, tu aurais dû lire la doc de la fonction pour l'utiliser. Le délimiteur est le 3ème paramètre ; par défaut, c'est la virgule. Si tu veux utiliser le ; :
fputcsv($fp, split(';', $line),";");
voir https://www.php.net/manual/fr/function.fputcsv.php
le ; qu'il y a dans split(';', $line) n'a aucun rapport avec le csv
Par contre, tu aurais dû lire la doc de la fonction pour l'utiliser. Le délimiteur est le 3ème paramètre ; par défaut, c'est la virgule. Si tu veux utiliser le ; :
fputcsv($fp, split(';', $line),";");
voir https://www.php.net/manual/fr/function.fputcsv.php
le ; qu'il y a dans split(';', $line) n'a aucun rapport avec le csv
Ah merci beaucoup Le Pèpère, j'ai lut la doc mais j'ai loupé cette partie.
Je me doutais que je passait à côté d'un truc bête.
Je me doutais que je passait à côté d'un truc bête.
En même temps si tu veut générer du csv je pense que tu dois lier les lignes d'un tableau avec le séparateur ";"
en utilisant implode, split te permettra pas de faire ce que tu voudras
en utilisant implode, split te permettra pas de faire ce que tu voudras