Précédent   Forum des professionnels en informatique > PHP > Outils
Outils Forum d'entraide sur les outils pour développeurs PHP : EDI, installation, administration... Avant de poster : FAQ outils, toutes les FAQ PHP et les comparatifs
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 14/01/2007, 12h08   #1
Invité de passage
 
Inscription : mars 2006
Messages : 2
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 2
Points : 1
Points : 1
Par défaut [Configuration] Retour chariot Macintosh

Bonjour, j'ai manifestement un problème avec les Macs...

Je vous explique :

Mon objectif est d'extraire les lignes d'un bête fichier .csv, construit à partir d'Excel ou de n'importe quel éditeur de texte. (et par la suite de les insèrer dans un tableau afin d'y étre triées, mais là n'est pas le problème)

Mon fichier .csv s'organise en gros comme ceci :

truc1;truc2;truc3;truc4;truc5
machin1;machin2;machin3;machin4;machin5
etc...

Pour extraire les données, j'utilise donc le code suivant :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
$monFichier = fopen("truc.csv", "r"); 
$i=0;
$ii=0;
while (($data = fgetcsv($monFichier,1000,";")) !== FALSE) { 
     foreach ($data as $d) { 
             $tab[$i][$ii]=addslashes(ucfirst(strtolower($d)));
             $ii++;
     } 
     $ii=0; 
     $i++;
}
Jusqu'à là, tout va bien.
Je teste : j'upload differents fichiers.csv sur le serveur.
Je teste avec des fichier.csv créés sur PC, ça marche.
Je teste avec des fichier.csv créée sur Linux, ça marche.

et là, c'est le drame...
je teste avec des fichier.csv crée sur un Mac,l'un avec Excel, et un autre avec un éditeur; et là rien ne va plus...
Ma fonction fgetcsv ne détecte pas la fin des lignes sur ces fichiers Mac, le retour chariot n'est apparament pas pris en compte...

Alors que je devrais obtenir ceci dans mon tableau :
|truc1 | truc2 | truc3 | truc4 |truc5 |
|machin1 | machin2 | machin3 | machin4 |machin5 |

J'obtiens cela:
|truc1 |truc2 |truc3 |truc4 |truc5 machin1 |


Problème d'autant plus épineux que c'est pour un client Mac bien sur...

Donc si quelqu'un s'y connait en conversion de retour chariot version Mac, je suis preneur.

Merci à tous..
Darkeucha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/01/2007, 14h19   #2
Expert Confirmé
 
Homme
Inscription : septembre 2006
Messages : 2 291
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : septembre 2006
Messages : 2 291
Points : 2 738
Points : 2 738
Citation:
Envoyé par Darkeucha
Bonjour, j'ai manifestement un problème avec les Macs...

Je vous explique :

Mon objectif est d'extraire les lignes d'un bête fichier .csv, construit à partir d'Excel ou de n'importe quel éditeur de texte. (et par la suite de les insèrer dans un tableau afin d'y étre triées, mais là n'est pas le problème)


Jusqu'à là, tout va bien.
Je teste : j'upload differents fichiers.csv sur le serveur.
Je teste avec des fichier.csv créés sur PC, ça marche.
Je teste avec des fichier.csv créée sur Linux, ça marche.

et là, c'est le drame...
je teste avec des fichier.csv crée sur un Mac,l'un avec Excel, et un autre avec un éditeur; et là rien ne va plus...
Ma fonction fgetcsv ne détecte pas la fin des lignes sur ces fichiers Mac, le retour chariot n'est apparament pas pris en compte...


Problème d'autant plus épineux que c'est pour un client Mac bien sur...

Donc si quelqu'un s'y connait en conversion de retour chariot version Mac, je suis preneur.

Merci à tous..
verifiez si

auto_detect_line_endings = true ;

dans php.ini… à partir de 4.3

ou utilisez une autre librairie…

ou faites un pré-traitement :
Code :
1
2
 
cat file | tr '\r' '\n' > cvtfile
(éventuellement dans un popen en PHP…)

ou :
sur Macintosh, tous les logiciels supportent tous les types de fin de lignes, il suffit de choisir la bonne option dans leurs "Préférences"…
en particulier dans Excel, il suffit de choisir le format "CSV (Windows)" au lieu de "CSV (séparateur ; point-virgule)"
JeitEmgie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/01/2007, 20h11   #3
Invité de passage
 
Inscription : mars 2006
Messages : 2
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 2
Points : 1
Points : 1
J'ai mis l'option sur ON...
Tout marche impec.

Merci du coup de main !
Darkeucha est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h40.


 
 
 
 
Partenaires

Hébergement Web