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 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 - 19 janv. 2012 à 21:40
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.
A voir également:

1 réponse

Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
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 ';
}
?>
0