Parser un .txt

nbpro Messages postés 36 Date d'inscription vendredi 18 août 2006 Statut Membre Dernière intervention 4 décembre 2012 - 8 sept. 2011 à 16:33
nbpro Messages postés 36 Date d'inscription vendredi 18 août 2006 Statut Membre Dernière intervention 4 décembre 2012 - 10 sept. 2011 à 14:21
salut,

je voudrai savoir comment lire un .txt en php

je veut ciblé la 2 ligne troisième mots
séparé par un espace

18 réponses

cod57 Messages postés 1653 Date d'inscription dimanche 7 septembre 2008 Statut Membre Dernière intervention 11 septembre 2013 19
8 sept. 2011 à 16:59
bonjour
as tu déjà un code

ex1 data.txt

123 toto itti
tutu tuuu ttt
tt eee rrr

<?php
$array_fichier=file('data.txt');
//Affichage du résultat
echo '';
print_r($array_fichier);
echo '<hr>';
$mot=explode(' ',$array_fichier[1]);
echo $mot[1];
?>


Bonne programmation !
0
nbpro Messages postés 36 Date d'inscription vendredi 18 août 2006 Statut Membre Dernière intervention 4 décembre 2012
8 sept. 2011 à 17:11
merci sa marche

c'est dans des paragraphes similaire de 10 ligne toute les 10 ligne y a un espace

je voudrai savoir comment répété l'opération sur chaque paragraphes sachant que le nombre de paragraphes est aléatoire
0
cod57 Messages postés 1653 Date d'inscription dimanche 7 septembre 2008 Statut Membre Dernière intervention 11 septembre 2013 19
8 sept. 2011 à 17:19
il suffit de compter les lignes
$c=count($array_fichier);
et un modulo 10 ... dans une boucle


Bonne programmation !
0
nbpro Messages postés 36 Date d'inscription vendredi 18 août 2006 Statut Membre Dernière intervention 4 décembre 2012
8 sept. 2011 à 17:27
merci
0

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

Posez votre question
nbpro Messages postés 36 Date d'inscription vendredi 18 août 2006 Statut Membre Dernière intervention 4 décembre 2012
8 sept. 2011 à 17:53
en faite le nombre de ligne est aléatoire suivant les paragraphe

il y a trois lignes sans texte qui sépare les paragraphe
0
nbpro Messages postés 36 Date d'inscription vendredi 18 août 2006 Statut Membre Dernière intervention 4 décembre 2012
8 sept. 2011 à 17:58
mai il commence toujours par les 2 même mots.

on peu se servir d'un mots comme balise pour créer la boucle ?
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
8 sept. 2011 à 20:03
Salut,

Ton histoire n'est pas très claire et ta demande évolue au fil des messages.

Avant de trouver une solution adaptée il convient d'identifier clairement les "éléments fixes et uniques" de ton texte :
une structure qui se répète, des marqueurs, etc ... etc ...


on peu se servir d'un mots comme balise pour créer la boucle ?

Si tes mots sont systématiques et uniques oui.
Peut être avec un explode().

Menfin le mieux serait que tu fournisses un exemple clair et précis, parce que là, mise à part faire des réponses à l'aveuglette ...


Cordialement,

Kohntark -
0
nbpro Messages postés 36 Date d'inscription vendredi 18 août 2006 Statut Membre Dernière intervention 4 décembre 2012
9 sept. 2011 à 00:19
voici le .txt a décoder le nombre de partie est aléatoire suivant le fichier

partie #119998888 niveau 1 (10 v/50 v) - 07/09/2011 19:02:20 CET
salle '1' #6-playermax
player 2 : joe (10 point)
player 1 : david (6 point)
player 1 : perd. 1 point
player 2 : gagne. 4 point
***david***
david perd [1 point] passe a (5) point


partie #119998887: niveau 1 (10 v/50 v) - 07/09/2011 19:02:20 CET
salle '1' #6-playermax
player 1 : david (10 point)
player 3 : eric (9 point)
player 2 : joe (6 point)
player 3 : null. 0 point
player 1 : perd. 4 point
player 2 : gagne. 4 point
***david***
david perd [4 point] passe a (6) point


je voudrai qui sorte comme sa

numéro de la partie => 119998887
niveau => 1
difficulté => 10 v/50 v
date => date
***joueur*** => david
point perdu ou gagné => perd. gagne. ou null.
total des points fin partie => (6)
nombre de joueurs => 3
nombre de joueurmax => 6


numéro de la partie => 119998888
niveau => 1
difficulté => 10 v/50 v
date => date
***joueur*** => david
point perdu ou gagné => perd. ou gagne. ou null.
total des points fin la partie => (5)
nombre de joueurs => 2
nombre de joueurmax => 6
0
syndrael Messages postés 2378 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 29 décembre 2012 20
9 sept. 2011 à 08:34
Ouh là.. c'est pas plus facile de passer par une base SQL.. sans même faire du MySQL ou Postgre, un SQLlite devrait suffire non ?
S.
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
9 sept. 2011 à 08:44
... nous sommes loin, très loin de ta demande initiale

Tu n'as pas trop le choix, il faut passer par une regex.

Voici une amorce pour la première ligne :
<?php
$txt = 
'partie #119998887: niveau 1 (10 v/50 v) - 07/09/2011 19:02:20 CET
salle \'1\' #6-playermax
player 1 : david (10 point)
player 3 : eric (9 point)
player 2 : joe (6 point)
player 3 : null. 0 point
player 1 : perd. 4 point
player 2 : gagne. 4 point
***david***
david perd [4 point] passe a (6) point ';

$regex = '`\s*partie\s\#(?\d+):
    \sniveau\s(?<niveau>\d{1,3})\s
    \((?<difficulte>\d{2,3}\sv/\d{2,3}\sv)\)\s-\s
    (?<date>\d{2}/\d{2}/\d{4}\s\d{2}:\d{2}:\d{2}\sCET)
    
`xu';
preg_match_all($regex, $txt, $aMatches);


echo '
numéro de la partie => '.$aMatches['partie'][0].'

niveau => '.$aMatches['niveau'][0].'

difficulté => '.$aMatches['difficulte'][0].'

date => '.$aMatches['date'][0].'
etc ...';
?>


Reste à parser le reste des lignes.

point perdu ou gagné => perd. gagne. ou null.

=> pas compris ce que tu veux obtenir là.


Cordialement,

Kohntark -
0
nbpro Messages postés 36 Date d'inscription vendredi 18 août 2006 Statut Membre Dernière intervention 4 décembre 2012
9 sept. 2011 à 12:40
ok merci

c possible d'avoir des note sur le regex je connait pas du tout.

comment faire la boucle ?

ps. point perdu ou gagné => perd. gagne. ou null.

c savoir s'il a perdu ou gagné
0
nbpro Messages postés 36 Date d'inscription vendredi 18 août 2006 Statut Membre Dernière intervention 4 décembre 2012
9 sept. 2011 à 12:42
ok c d exprésion reguliere jss debutant je cherche de se coté la
0
nbpro Messages postés 36 Date d'inscription vendredi 18 août 2006 Statut Membre Dernière intervention 4 décembre 2012
9 sept. 2011 à 15:06
ok je croi avoir compris compris les regex


player 1 : david (10 point) ===> )\splayer\s(?<siege>\d+)\s\:\s(?[a-z1-9]+)\sect...

et je recupére le le numéro player et le nom joueur

c déjà un bon début merci
0
nbpro Messages postés 36 Date d'inscription vendredi 18 août 2006 Statut Membre Dernière intervention 4 décembre 2012
10 sept. 2011 à 00:58
voila se que j'ai fait avec regex raccourci

je voudrai savoir comment injecter

"ex : $out['siege']" avec une requête mysql.




<?php



$ch= 'partie #119998887: niveau 1 (10 v/50 v) - 07/09/2011 19:02:20 CET player 1 : david (10 point)
player 3 : eric (9 point)
player 2 : joe (6 point)
player 3 : null. 0 point
player 1 : perd. 4 point
player 2 : gagne. 4 point
***david***
david perd [4 point] passe a (6) point

partie #119998888: niveau 1 (10 v/50 v) - 07/09/2011 19:02:20 CET player 1 : david (10 point)
player 3 : eric (9 point)
player 2 : joe (6 point)
player 3 : null. 0 point
player 1 : perd. 4 point
player 2 : gagne. 4 point
***david***
david perd [4 point] passe a (6) point';
preg_match_all('`(partie\s\#(?\d+)|player\s(?<siege>\d+)\s\:\s[a-z]+\s\(\d+\s[a-z]+\))`',$ch,$out);

$partie=$out['partie'];
$siege=$out['siege'];
$combien=count($partie); // nbre d'éléments séparés par "*"

echo " Ce fichier contient ",$combien," données :

";

for ($i =0;$i<=$combien;$i++)
{
echo "$partie[$i] $siege[$i] "; // affichage des données
}

?>
0
nbpro Messages postés 36 Date d'inscription vendredi 18 août 2006 Statut Membre Dernière intervention 4 décembre 2012
10 sept. 2011 à 01:02
ps : g voulu allé vite g pas enlevé les commentaire qui corresponde pas.
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
10 sept. 2011 à 10:51
je voudrai savoir comment injecter

"ex : $out['siege']" avec une requête mysql.


Désolé, je n'ai pas compris ta question.
Tu veux savoir comment faire une requête SQL INSERT ?


Cordialement,


Kohntark -
0
nbpro Messages postés 36 Date d'inscription vendredi 18 août 2006 Statut Membre Dernière intervention 4 décembre 2012
10 sept. 2011 à 12:17
oui j'ai fait des teste sa insert 'array' dans les table.

je voudrai faire une requête qui s’exécute ds une boucle. si posible .
0
nbpro Messages postés 36 Date d'inscription vendredi 18 août 2006 Statut Membre Dernière intervention 4 décembre 2012
10 sept. 2011 à 14:21
la boucle :
{
partie: n°departie
siege : 1 2 3 ... jusqua 6 suivant le txt
}
en boucle jusqu' a la fin du fichier
0
Rejoignez-nous