Masque,filtrage,modif d'un fichier

cs_xtremexp Messages postés 4 Date d'inscription samedi 27 mai 2006 Statut Membre Dernière intervention 30 mai 2006 - 27 mai 2006 à 17:25
cs_xtremexp Messages postés 4 Date d'inscription samedi 27 mai 2006 Statut Membre Dernière intervention 30 mai 2006 - 30 mai 2006 à 18:57
salut,
voilà, je suis un gros noob en php et j'aimerai faire un script qui puisse afficher un fichier en y faisant quelques modifications. Le fichier en question est celui-ci
(juste le début):
[DBestTimes.BestTimes]
BestMapTimes=AS-D2F[Multidodging]-V1-SE%TME:618%NMS:merêntiâ, {LôD}Storm, BlackCat
BestMapTimes=AS-7Co-MayanTemple-V01b%TME:283%NMS:{LôD}Knight (BE), »DmT]óö[slåyér«6 (NL), {MoD}Dark_Angel (GRB)

J'aimerai filtrer et réarranger ce fichier pour obtenir ceci:
AS-D2F[Multidodging]-V1 618 merêntiâ {LôD}Storm BlackCat
AS-7Co-MayanTemple-V01b 283 {LôD}Knight (BE) »DmT]óö[slåyér«6 (NL) {MoD}Dark_Angel (GRB)

seulement ya pleins de petits trucs qui m'enbètent:
j'arrive pas à enlever ça d'abord:
"[DBestTimes.BestTimes]"

j'ai fait ce script avec test2.ini=[DBestTimes.BestTimes] (juste ça)
<?php
$fichier = "test2.ini";
$a = file_get_contents($fichier);
$dat = str_replace("[DBestTimes.BestTimes]"," ",$a);
echo $dat;
//echo $dat
?>

ça m'affiche ça:
[DBestTimes.BestTimes] (ça garde l'expression au lieu de la supprimer :S )
Note, en hexa, avant le "[", ya "FF FE".

Ensuite , le deuxième problème c'est de changer les fins de lignes en saut de ligne et la encore j'ai pas reussi ..
et puis après le reste..enfin bon déjà les 2 premier problèmes du dessus réglés ça sera pas mal

Voilà si vous pouviez m'aider car là je galère lol

5 réponses

WhiteDwarf Messages postés 510 Date d'inscription samedi 29 décembre 2001 Statut Membre Dernière intervention 23 mai 2008
27 mai 2006 à 20:11
Moi j'aurais plutôt fais :

<?php
$fichier = "test2.ini";
$fp = fopen($fichier, "w");
$a = fread($fp, filesize($file));
$dat = str_replace("[DBestTimes.BestTimes]"," ",$a);
echo $dat;
//echo $dat
?>


Question de point de vue :p
----------------------
La lumière étant plus rapide que le son, un homme peu paraître brillant avant qu'il se mette a parler
-----------------
0
cs_xtremexp Messages postés 4 Date d'inscription samedi 27 mai 2006 Statut Membre Dernière intervention 30 mai 2006
27 mai 2006 à 21:57
j'ai essayé avec tes modifs mais en remplacant le $file,w par $file,r+ histoire de pas effacer tout le fichier dès le départ sinon ya rien à remplacer :)
<?php
$file = "test2.ini";
$fp = fopen($file, "r+");
$a = fread($fp, filesize($file));
$dat = str_replace("[BestMapTimes]","LOL ",$a);
echo $dat;
?>
avec test2.ini:
[DBestTimes.BestTimes]
BestMapTimes=AS-D2F[Multidodging]-V1-SE%TME:618%NMS:merêntiâ, {LôD}Storm, BlackCat

ça m'affiche pareil, donc j'ai toujours pas reussi à enlever ce truc ([DBestTimes.BestTimes]
)
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
28 mai 2006 à 18:16
hello,

le file_get_contents () était très bien.
je suis un peu surpris par ton problème...
Tu devrais peut-être procéder différemment. Surtout s'il y a des caractères hexa dont tu ne connais pas la signification.
Si le format est toujours comme celui-là, cela veut dire que tu as des positions fixes.
Si tu as des sauts de ligne dans le fichier, c'est encore mieux.
récupère avec file ();
parcours le tableau obtenu.
Saute la 1ère ligne...
récupère à partir du bon offset jusqu'à la fin de ta chaîne.
Etc...
0
cs_xtremexp Messages postés 4 Date d'inscription samedi 27 mai 2006 Statut Membre Dernière intervention 30 mai 2006
29 mai 2006 à 12:49
j'ai essayé avec la fonction parse_ini_file avec ce code:
<?php
$file="test2.ini";

$ini_array = parse_ini_file($file, TRUE);
$dat_a=($ini_array["DBestTimes.BestTimes"]["BestMapTimes"]);
$dat_b=explode("%",$dat_a); //isolement Carte/Temps/Joueurs
echo $dat_a;
echo '
';
print_r($dat_b);
echo '
';
$dat_b[1] = str_replace("TME:","",$dat_b[1]); //suppression des données indésirables dans Temps et Joueurs
$dat_b[2] = str_replace("NMS:","",$dat_b[2]);
$dat_b[2] = str_replace(" ","",$dat_b[2]);
print_r($dat_b);

//isolement du nom de la carte
$carte = $dat_b[0];
echo '

Carte: 
' .$carte;

//Convertion du temps en secondes en Minutes et Secondes
$minutes=floor($dat_b[1]/(60));
$secondes=$secondes=60*(number_format($dat_b[1]/(60),2)-floor($dat_b[1]/(60)));
$temps = array_merge($minutes,$secondes);
echo '

Temps:
';
print_r($temps);

//Insertion des noms de joueurs dans un tableau à 3 dimensions
$joueurs=explode(",",$dat_b[2]);
echo '

Joueurs: 
';
print_r($joueurs);

$classement = array_merge($carte,$temps,$joueurs);
echo '

Classement:   Carte   Minutes   Secondes  Joueur1  Joueur2   Joueur3
';
print_r($classement);
?>


Ce code arrive à séparer correctement les variables avec des données avec des caractères simples, seulement quand test2.ini= ça:
[DBestTimes.BestTimes]
BestMapTimes=AS-7Co-MayanTemple-V01b%TME:283%NMS:{LôD}Knight (BE), »DmT]óö[slåyér«6 (NL), {MoD}Dark_Angel (GRB)

, ya des caractère que php n'aime pas et il arrive plus à séparer les variables:
Warning: Error parsing test2.ini on line 2 in c:\program files\easyphp1-8\www\read2.php on line 4

Notice: Undefined index: DBestTimes.BestTimes in c:\program files\easyphp1-8\www\read2.php on line 5

Array ( [0] => )

Notice: Undefined offset: 1 in c:\program files\easyphp1-8\www\read2.php on line 11

Notice: Undefined offset: 2 in c:\program files\easyphp1-8\www\read2.php on line 12
Array ( [0] => [1] => [2] => )

Carte:

Minutes:0

Temps:
Array ( [0] => 0 [1] => 0 )

Joueurs:
Array ( [0] => )

Classement: Carte Minutes Secondes Joueur1 Joueur2 Joueur3
Array ( [0] => [1] => 0 [2] => 0 [3] => )

comment faire, pour en amont, filtrer ces variables indésirables? (une fonction qui enlève les mauvais caractères?)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_xtremexp Messages postés 4 Date d'inscription samedi 27 mai 2006 Statut Membre Dernière intervention 30 mai 2006
30 mai 2006 à 18:57
g reussi à faire fonctionner mon script correctement avec plusieurs lignes en le modifiant seulement celui-ci ne fonctionne pas avec des fichiers codés en UTF-16. (FF FE en tout début de fichier, puis après les données textes).
Ya t'il un moyen de convertir le fichier en faisant en sorte de supprimer ce codage?
0
Rejoignez-nous