exploitation fichier txt

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : exploitation fichier txt

par Invité » 22 déc. 2006, 13:14

Finalement j'ai trouvé ce qui n'allait pas. Il suffistait de mettre les fonctions dans des variables.
$var=preg_replace() par exemple.
Merci pour ton aide.

par Ajoloca » 22 déc. 2006, 05:52

Bonjour,
personne ne sait comment remplacer des caractères de tabulation dans un fichier txt?
Tu vas te faire taper sur les doits ! Les up sont interdis sur PHPFrance

Tu devrais avant tout t'assurer que ce sont bien des "\t" et des "\n".

Si j'ai bien compris tu est sous Windows, donc ce que tu dis ne me semble pas correct, tu devrais avoir aussi de "\r".

Prends la première ligne (complète - correspondant à un enregistrement), sort-la dans un fichier à part.

Crée un petit script PHP qui te sort les caractères et le code ASCII associé à chacun.

Pour le faire utilise les fonctions ord() et chr().

par Invité » 21 déc. 2006, 23:42

personne ne sait comment remplacer des caractères de tabulation dans un fichier txt?

par Invité » 21 déc. 2006, 19:42

voici un autre essai qui ne marche pas non plus, avec preg_replace au lieu de str_replace:
//chaines utilisées pour les remplacements
$ttn="\\t\\t\\n";
$zzz="\\z\\z\\z";
$t="\\t";

//les mêmes chaines au format motif d'expression rég.
$ttn_expression="/\\t\\t\\n/";
$zzz_expression="/\\z\\z\\z/";
$n_expression="/\\n/";

//mes opérations de remplacement
preg_replace($ttn_expression , $zzz, $content);
preg_replace($n_expression ,$t, $content);
preg_replace($zzz_expression, $ttn, $content);

$fichier=fopen('fichier.txt','w+'); 
fputs($fichier, $content);
fclose($fichier);

J'ai bien un nouveau fichier qui est créé et rempli avec $content, mais le contenu est identique à mon fichier initial alors que tous les \n devrait avoir été remplacés par \t, sauf les \n qui sont dans la chaine \t\t\n.

par Invité » 21 déc. 2006, 19:21

ben le fichier ne devrait pas être dans un tableu si je le lis avec file_get_contents qui renvoie une chaine.
A partir de la j'ai pensé qu'une boule n'était pas nécessair pour parcourir tous les caractères. Je veux juste enlever tous les \n du fichier, sans enlever les \t\t\n. ça veut dire que ma fonction de remplacement ne doit pas remplacer \n s'il est précédé de \t\t, mais uniquement s'il est isolé

par Ajoloca » 21 déc. 2006, 19:06

Re,

Même, ton fichier est chargé dans un tableau, non?

Je ne vois pas de boucle, c'est normal ?

par Invité » 21 déc. 2006, 19:03

la variable $content contient le contenu initial de mon fichier avecretourchariot.txt. J'ai mis des ....... pour représenter le contenu du fichier dont le lien se trouve au début de ce post.

par Ajoloca » 21 déc. 2006, 18:52

Re,

Réfléchis un peut à ce que tu fais.

Tu initialise une variable $content avec des points et tu demandes dans cette même variable de remplacer des choses qui n'existent pas.

Que crois-tu qui se passe ???

par Invité » 21 déc. 2006, 18:48

peut être que ce n'est pas possible d'agir sur les caractères de cette manière?

par Invité » 21 déc. 2006, 18:24

j'ai fait ceci mais ça ne marche pas :
$content="............";  //variable qui contient le contenu initial de mon fichier txt. Dans ce fichier, je veux remplacer tous les \n par des \t 

$n="\n"; // chaine à remplacer
$t="\t"; //chaine de remplacement

$ttn="\t\t\n"; //chaine à conserver
$zzz="\z\z\z"; //chaine pour masquer \t\t\n le temps de remplacer \n par \t

//je masque \t\t\n pour ne pas modifier pendant le traitement
str_replace($ttn , $zzz, $content);
//je remplace tous les \n par des \t
str_replace($n ,$t, $content);
//je remets les \z\z\z en \t\t\n
str_replace($zzz, $ttn, $content);

//je crée un fichier ou je mets le contenu pour le visualiser avec gvim
$fichier=fopen('fichier.txt','w+'); 
fputs($fichier, $content);
fclose($fichier);
Quand je visualise dans gvim après un set list, rien n'a changé.
Ou me suis-je trompé?

par Invité » 21 déc. 2006, 15:20

c super, j'arrive à séparer chaque enregistrement en faisant
$content=explode("\t\t\n", $content); 
Merci beaucoup pour votre patience.
Une dernière question sur les expressions régulières (auxquelles je ne comprends pas grand chose non plus...) .
Je voudrais analyser tous les \n du fichier, avec 2 cas:
1- Si \n est isolé, je le remplace par \t
2- Si \n se trouve dans la chaîne \t\t\n, je le conserve

avez vous une idée de coment rédiger ça en php?

par fgranjon » 21 déc. 2006, 14:51

Les ^I sont les \t et les $ sont les \n

par Invité » 21 déc. 2006, 14:47

je veux dire :comment distinguer par exemple \n de \r?

par Invité » 21 déc. 2006, 14:46

ok, je vois des données séparées par ^I^I , et ^I.
Les fins de ligne sont séparées par $.
à quoi correspondent ces caractères en termes de \n, \t...

par fgranjon » 21 déc. 2006, 14:32

essaye de taper la séquence suivante:
[echap] : set list [enter]