Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1946 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  traitement de fichiers portant le même nom

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

traitement de fichiers portant le même nom

n°1608998
nicdudu
Posté le 06-09-2007 à 17:25:45  profilanswer
 

Bonjour,
 
Je développe un programme qui permet ,dans un répertoire, de modifier des fichiers.xml en les transformant en .txt dont le titre est une balise contenue dans le xml.
 
Je traite bien les fichiers mais il arrive que des fichiers XML contiennent la même balise constituant le nommage du fichier .txt . Ce qui me dérange c'est que je voudrais que les 2 fichiers soient présents après lancement du programme. Actuellement, un seul fichier ressort  !
 
[B]exemple : [/B]
contenu de  12345.xml  

Code :
  1. ...
  2. <Sujet>5-communes</Sujet>
  3. ...


 
contenu de 23456.xml

Code :
  1. ...
  2. <Sujet>5-communes</Sujet>
  3. ...


 
J'aimerais récupérer les 2 fichiers , tester si ils se nomment de la même manière, pouvoir renommer le 2nd en 5-communes-1 dans notre cas.
 
J'ai essayé "file exists", mais ça ne remarque pas qu'il existe déjà ?!?
voici mon prog
 

Code :
  1. <?php
  2. // on ouvre le repertoire
  3. $handle = opendir('.');
  4. // on scrupte le repertoire
  5. while(false !== ($file = readdir($handle))) {
  6.     if($file != "." && $file != ".." && $file !="transxml.php" ) {
  7. // on cree le chemin
  8. $path = '.'.'/'.$file;
  9. // on traite tous les fichiers xml
  10. if (preg_match('~\T.xml$~',$file)) {
  11. // on applique la transformation
  12. x$sxml = simplexml_load_file($path);
  13. $titre = utf8_decode($sxml->Proprietes->Sujet);
  14. //echo utf8_decode($sxml->Contenu);
  15. $texte = utf8_decode($sxml->Contenu);
  16. $texte = str_replace('?',"'",$texte);
  17. $texte = str_replace('\(','',$texte);
  18. $bad = array ('\cST\s','\cTI\s','\cTX\s','\cSG\s','\$','\dSG\t','\dDS1,2\t','\dFS\t','\dSN\t','\dSI\t','\cCH\s');
  19. $good = array ('','','',' ',' ','','','','','','');
  20. $texte = str_replace ($bad,$good,$texte);
  21. $titre = str_replace (' ','_',$titre);
  22. // on cree le fichier destination avec les donnees du fichier source
  23. $fp = fopen ('.' . DIRECTORY_SEPARATOR . $titre. '.txt','w');
  24. fputs ($fp,$texte);
  25. fclose ($fp);
  26. }
  27. }
  28. }
  29. // on ferme le repertoire
  30. closedir($handle);
  31. ?>


 
Merci d'avance pour vos réponses , car je nage :(

mood
Publicité
Posté le 06-09-2007 à 17:25:45  profilanswer
 

n°1609026
nicdudu
Posté le 06-09-2007 à 18:37:40  profilanswer
 

c bon, j'ai trouvé :  
 
la bonne syntaxe est de mettre le if avant le fopen , de cette manière :
 
 
if (file_exists($titre.'.txt')) {
$titre = "$titre-1";
}
 
$fp = fopen ('.' . DIRECTORY_SEPARATOR . $titre. '.txt','w');
fputs ($fp,$texte);
fclose ($fp);
 
A plus !!

n°1609028
omega2
Posté le 06-09-2007 à 18:41:45  profilanswer
 

Risque de problème avec ta solution : tu fais quoi s'il existe déjà un fichier dont le nom est "$titre-1.txt" ?
 
Il vaut mieux vérifier quels sont les fichiers qui commencent par $titre et qui finissent par .txt (utilise la fonction glob() ) De cette manière tu sauras quel nom donner à ton fichier.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  traitement de fichiers portant le même nom

 

Sujets relatifs
Schema.ini peut il s'appliquer à plusieurs fichiers différents?Utiliser des fichiers ressources en ada
Le traitement d'images et JavaLa squelettisation en traitement d'images sous builderC++
arborescence et comptage de fichiers selon extensionportabilité Linux<->Windows : séparateur des chemins de fichiers
synchro de fichiers entre 2 dossiers: XCOPY?Comment gerer une fenêtre de mise à jours fichiers due à une erreur?
un dossier avec plusieurs fichiers à traiter : console casséeMacro unique pour plusieurs fichiers excels
Plus de sujets relatifs à : traitement de fichiers portant le même nom


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR