Tratiement CSV en PHP
Fermé
titus93
Messages postés
2
Date d'inscription
mardi 2 octobre 2007
Statut
Membre
Dernière intervention
19 janvier 2012
-
19 janv. 2012 à 09:07
Alain_42 Messages postés 5358 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 - 19 janv. 2012 à 21:40
Alain_42 Messages postés 5358 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 - 19 janv. 2012 à 21:40
A voir également:
- Tratiement CSV en PHP
- Alert php ✓ - Forum PHP
- Header php - Astuces et Solutions
- Undefined index php - Astuces et Solutions
- Retour a la ligne php ✓ - Forum PHP
- Modulo php ✓ - Forum PHP
1 réponse
Alain_42
Messages postés
5358
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
901
19 janv. 2012 à 21:40
19 janv. 2012 à 21:40
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 ';
}
?>