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

  FORUM HardWare.fr
  Programmation
  PHP

  Récupérer puis modifier des infos depuis un fichier texte

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Récupérer puis modifier des infos depuis un fichier texte

n°1386318
Gadro
Posté le 13-06-2006 à 11:22:45  profilanswer
 

Salut,
 
Je n'ai pas trouvé de sujet similaire, j'éspère que mon post ne fait pas doublon.
Je rencontre un petit probleme : J'ai un fichier type texte, avec des mots dedans. En fait c'est l'utilisateur de mon site qui l'envoit, donc je veux faire une vérification de sécurité : enlever tout ce qui n'est pas des lettres pour éviter un eventuel code malicieux.
 
J'ai donc mon code :

$handle=fopen($mon_fichier,"r+" );
while (!feof($handle)) {
 $data_fichier=fgets($handle,1024);
 $search="#[^\-'a-zæÆàÀâÂäÄåÅçÇðÐéÉèÈêÊëËîÎïϜŒôÔöÖùÙûÛüÜÿŸÁáÍíÓóÚúÝýÑñßÞþØøŠšŽž ]#si";
 $data_checked = preg_replace($search,"",$data_fichier);
 fwrite($handle, $data_checked);
}
fclose($handle);


Donc voila le principe : on parcours les lignes du fichier, si on trouve un caractère qui n'est pas répértorié par le masque $search, alors on le supprime, puis on recopie dans le fichier.
Mais dans la pratique, ca fonctionne pas très bien... Par exemple pour un fichier texte comme suit :

Toto
Tata
Titi-hihi
Jojo le rigolo
Tutu
L'analphabète


Je me retrouve après execution de ma fonction avec le fichier suivant :

Toto
Toto
Titi-hihi
Titi-hihiigolo
igolo
L'analphabèteL'analphabète


Ce qui est bien mais pas top... Où ais-je fais une erreur ? Ca ne vient meme pas encore de preg_replace puisque le texte passe mal dès récupération (j'ai fait un test en mettant un echo $data_fichier; ca plante déjà à ce moment.
 
Merci d'avance pour votre aide !

mood
Publicité
Posté le 13-06-2006 à 11:22:45  profilanswer
 

n°1386383
zapan666
Tout est relatif
Posté le 13-06-2006 à 12:16:11  profilanswer
 

euh, lire un fichier et ecrire dedans, tres tres mauvaise idee (d'ailleurs ca ne doit pas marcher...)
 
ensuite tu essaye d'ecrire dans un fichier en lecture, donc ca ne doit pas marcher quand tu essaye d'ecrire (et vu que c'est le fichier que tu lis le resultat est *limite* imprevisible)


---------------
my flick r - Just Tab it !
n°1386390
Gadro
Posté le 13-06-2006 à 12:21:07  profilanswer
 

Il est en lecture et ecriture : 'r+'   Ouvre en lecture et écriture, et place le pointeur de fichier au début du fichier.
 
Comment me conseillerais-tu de procéder dans ce cas là ?

n°1386396
zapan666
Tout est relatif
Posté le 13-06-2006 à 12:24:26  profilanswer
 

a oui tiens, je croyais que r+ c'etait pour lecture et creation si le fichier n'existe pas ([:pingouino])
 
Pour ma part, je ferais une lecture du fichier entier, traitement du bordel,  
remetre ton pointeur de fichier au debut (rewind()) et ecriture de ton traitement
 
fermeture du fichier


---------------
my flick r - Just Tab it !
n°1386441
Gadro
Posté le 13-06-2006 à 13:11:31  profilanswer
 

pas bete, je vais essayer, merci.

n°1386480
Gadro
Posté le 13-06-2006 à 13:32:42  profilanswer
 

ah ca marche presque !
 
J'ai juste quelques scories a la fin, bizarre...

Code :
  1. $handle=fopen("noms/".$nom_txt_noms,"r+" );
  2. $i=0;
  3. while (!feof($handle)) {
  4. $data_fichier[$i]=fgets($handle,1024);
  5. $i++;
  6. }
  7. $nb_lignes=$i--;
  8. rewind($handle);
  9. for($i=0;$i<$nb_lignes;$i++) {
  10. $search="#[^\-'a-zæÆàÀâÂäÄåÅçÇðÐéÉèÈêÊëËîÎïϜŒôÔöÖùÙûÛüÜÿŸÁáÍíÓóÚúÝýÑñßÞþØøŠšŽž ]#si";
  11. $data_checked[$i] = preg_replace($search,"",$data_fichier[$i]);
  12. if(!empty($data_checked[$i])) {
  13.   fwrite($handle, $data_checked[$i]."\n" );
  14. }
  15. }
  16. fclose($handle);


Et donc de ça :

Jojo le rigolo!
Toto
Tata
Titi-hihi
Jojo, le rigolo
Tutu
Ty?ty
"L'analphabète"
Århus


J'obtiens :

Jojo le rigolo
Toto
Tata
Titi-hihi
Jojo le rigolo
Tutu
Tyty
L'analphabète
Århus
bète"
Århus


Je sais pas d'où viennent ces 2 dernières lignes ni comment les virer >_<
Une idée siouplé ?

n°1386565
Gadro
Posté le 13-06-2006 à 15:03:39  profilanswer
 

J'ai trouvé la réponse, je la poste si jamais quelqu'un la cherche... Donc pour supprimer les caractères en fin de fichier, il suffisait d'ouvrir le fichier en mode w+ qui remet la taille à 0. Voilà donc mon code au final
 

Code :
  1. $handle=fopen($monfichier,"r" );
  2. $data_checked="";
  3. while (!feof($handle)) {
  4. $data_fichier=fgets($handle,4096);
  5. $search="#[^\-'a-zæÆàÀâÂäÄåÅçÇðÐéÉèÈêÊëËîÎïϜŒôÔöÖùÙûÛüÜÿŸÁáÍíÓóÚúÝýÑñßÞþØøŠšŽž ]#si";
  6. if(preg_match($search,$data_fichier)) {
  7.   $data_checked.= preg_replace($search,"",trim($data_fichier));
  8.   $data_checked.="\n";
  9. }
  10. else {
  11.   $data_checked .= $data_fichier."\n";
  12. }
  13. }
  14. fclose($handle);
  15. $handle=fopen($monfichier,"w+" );
  16. fwrite($handle, $data_checked);
  17. fclose($handle);

n°1386609
zapan666
Tout est relatif
Posté le 13-06-2006 à 15:32:30  profilanswer
 

eiuh je pense a un truc
 

Code :
  1. $search="#[^\-'a-zæÆàÀâÂäÄåÅçÇðÐéÉèÈêÊëËîÎïϜŒôÔöÖùÙûÛüÜÿŸÁáÍíÓóÚúÝýÑñßÞþØøŠšŽž ]#si";
  2. $content = file_get_contents($monfichier);
  3. $data_checked= preg_replace($search,"",$content);
  4. file_put_contents($monfichier, $content);


Ca marche pas ca ? [:petrus75] (verifie la doc pour les fonctions file_get_contents et file_put_contents par contre j'suis pas sur de moi)


---------------
my flick r - Just Tab it !
n°1386956
afbilou
pouet your life
Posté le 13-06-2006 à 21:28:18  profilanswer
 

$search = "#[^\w\s'-]#";
 
:s
 
et le "s" ne sert a rien dans tes options de masque :s
le "s" c'est pour faire matcher le caractere jocker "." avec "\n" et "\r" ... or tu n'utilises pas de "." dans ton masque :s tu cofonds "s" et "m" a mon avis :s
 
Normalement "-" dans une classe [] se met a la fin de la classe :s


Message édité par afbilou le 13-06-2006 à 21:31:03

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

  Récupérer puis modifier des infos depuis un fichier texte

 

Sujets relatifs
[CSS] déterminé la largeur du texteUpload de fichier (chgm de fichier tmp)
[PHP] Aperçu de fichiers - Extraire données fichier Excel[RESOLUUUU] [ACCES/SQL] ListBox à récupérer dans un ETAT selon Choix
SqlServer récupérer l'année sur 2 chiffres[VBA-E] SOS - Ouverture de fichier avec macro
problème javabean. jsp à fichier class(liaison??)Recuperer une base apres plantage carte mere
Chargement d'un fichier de sauvegarde[Reflection] Récupérer les paramètres d'un Delegate
Plus de sujets relatifs à : Récupérer puis modifier des infos depuis un fichier texte


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