Tratiement CSV en PHP
titus93
Messages postés
2
Statut
Membre
-
Alain_42 Messages postés 5361 Date d'inscription Statut Membre Dernière intervention -
Alain_42 Messages postés 5361 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai besoin de traiter un fichier CSV qui contient plusieurs tableaux, ceux-ci sont séparer par le mot ****_start et ****_end.
Je voudrais pouvoir créer plusieurs fichiers qui contiennent chacun un tableaux appartenant au fichier CSV.
Je voudrais utilisé du PHP pour le faire.
Quelqu'un peut-il m'aider.
J'ai besoin de traiter un fichier CSV qui contient plusieurs tableaux, ceux-ci sont séparer par le mot ****_start et ****_end.
Je voudrais pouvoir créer plusieurs fichiers qui contiennent chacun un tableaux appartenant au fichier CSV.
Je voudrais utilisé du PHP pour le faire.
Quelqu'un peut-il m'aider.
A voir également:
- Tratiement CSV en PHP
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- Retour a la ligne php - Forum Webmastering
- Retour à la ligne php ✓ - Forum PHP
- Convertir csv en ofx - Forum LibreOffice / OpenOffice
1 réponse
voilà une solution:
<?php
//si ton fichier est de la forme
/*
xxxx_start
blabla
....
....
yyyy_fin
zzzzz_start
bolobolo
.....
...
....
wwww_fin
*/
//attention il faut mettre ici le chemin relatif par rapport à ce script
$nom_fichier='./tonfichier.csv';
//on lit tout le fichier par file qui met dans un array ligne par ligne
if(is_file($nom_fichier)){
$array_fichier = file($nom_fichier);
//parcours de l'array pour detecter les tags de debut et fin
$num_fich=0;
$num_ligne_start=0;
$num_ligne_end=-1;
$array_resultat=array();
foreach($array_fichier as $num_ligne=>$contenu_ligne){
//detection tag debut
if(preg_match("#[A-Za-z0-9]_start#",$contenu_ligne)){
$num_ligne_start=$num_ligne;
//changement numéro de fichier
if($num_ligne_start > $num_ligne_end){
$num_fich ++;
}
}
//detection tag fin
if(preg_match("#[A-Za-z0-9]_end#",$contenu_ligne)){
$num_ligne_end=$num_ligne;
}
//empilage dans l'array a deux dimensions sauf les lignes contenant les tags debut et fin
if($num_ligne != $num_ligne_start && $num_ligne != $num_ligne_end){
$array_resultat[$num_fich][]= $contenu_ligne;
}
}
//on se retrouve avec un array a 2 dimensions dont la premiere est le numéro de fichiers et la deuxième leur contenu
//parcours premiere dimension
$cpt_fich=0;
foreach($array_resultat as $num_fichier=>$array_contenu_fichier){
//on ouvre le fichier, si n'existe( c'est notre cas) pas on le crée
//tu peux mettre le nom que tu veux
//attention il faut mettre ici aussi le chemin relatif par rapport à ce script et que le répertoire qui le contiendra soit en chmod 777
$cpt_fich ++;
$f=fopen("./fichier_result_".$num_fichier,"w+");
//parcours deuxieme dimension
foreach($array_contenu_fichier as $key=>$ligne){
//ecriture contenu ligne
fputs($f,$ligne);
}
fclose($f); //fermeture fichier
}
echo "<br />".$cpt_fich." fichiers ont été crées";
}else{
echo 'Fichier '.$nom_fichier.' non trouvé, revoir le nom ou le chemin relatif de ce fichier par rapport a ce script php ';
}
?>