Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Faire un tableau a partir d'un fichier texte

8 réponses
Avatar
SOCARA Strasbourg
Bonjour,
j'ai un fichier texte dont voici un extrait
-={P.A.G}=-Draven|669078528|668468420
-={P.A.G}=-Andy[UK]|676938876|676919330
-={P.A.G}=-Waffen_grenadier|680606921|669282384

puis ce bout de code
<?php
$fp = fopen("classeur.txt","r");
while (!feof($fp)) {
$ligne .= fgets($fp, 4096);
}
$myVar= explode("&",$ligne);
$name = explode("=",$myVar[0],2);
$rank = explode("=",$myVar[2]);
echo $name[1].": ".$rank[1];
echo $ligne;
fclose($fp);
?>

Mais je voudrais l'adapter pour quil me fasse un tableau de ce style


-={P.A.G}=-Draven 669078528 668468420
-={P.A.G}=-Andy[UK] 676938876 676919330
-={P.A.G}=-Waffen_grenadier 680606921 669282384

Sachant que le séparateur est le caractère | [alt+6)


--
**********************
SOCARA S.A.
Strasbourg

8 réponses

Avatar
Salagir
On 27 Oct 2003 13:22:20 GMT, in fr.comp.lang.php,
SOCARA Strasbourg wrote:
j'ai un fichier texte dont voici un extrait
-={P.A.G}=-Draven|669078528|668468420
-={P.A.G}=-Andy[UK]|676938876|676919330
-={P.A.G}=-Waffen_grenadier|680606921|669282384
puis ce bout de code
<?php
$fp = fopen("classeur.txt","r");
while (!feof($fp)) {
$ligne .= fgets($fp, 4096);
}


déjà tu peux remplacer le while par un simple:
$tableau = file( $fp );

Tu auras un tableau avec chaque ligne dans un élément.
Ensuite plus qu'à découper chaque ligne.


Et pour ca il suffit d'utiliser explode, justement:

foreach ($tableau as $k=>$v)
$tableau[$k] = explode('|', $v);

fclose($fp);
?>



voilà t'as tout dans une variable.

A afficher en mode texte, je pense qu'un simple:

foreach ($tableau as $ligne) {
foreach($ligne as $cell)
echo $cell."t";
echo "n";
}

suffit

--
++++++++ Zelda, Dragon Ball, Mana and my (art)work at www.salagir.com ++++++++
Dieu est très fort pour le RayTracing -+- Maxwell -+-

Avatar
L'alsacien Strasbourg
En fait il faudrait que je puisse coller chaque élément dans une variable
car après je veut faire un tableau
<table>
<tr>
<td>-={P.A.G}=-Draven</td><td>669078528</td><td>668468420</td>
</tr>
<tr>
<td>-={P.A.G}=-Andy[UK]</td><td>676938876</td><td>676919330</td>
</tr>
.......

si je réussi à coller le nom dans une variable
le premier num dans une autre et le 2em num dans une troisieme,
je pourrais faire un tableau (dans le sens tableau en affichage) en php
automatiquement
Avatar
Salagir
On 28 Oct 2003 15:11:50 GMT, in fr.comp.lang.php,
L'alsacien Strasbourg wrote:
En fait il faudrait que je puisse coller chaque élément dans une variable
car après je veut faire un tableau
<table>
<tr>
<td>-={P.A.G}=-Draven</td><td>669078528</td><td>668468420</td>
</tr>
.......


C'est exactement ce que j'ai fais: j'ai tout foutu dans des variables.

Si tu veux afficher le résultat en mode html:

echo "<table>n";
foreach ($tableau as $ligne) {
echo "t<tr>";
foreach($ligne as $cell)
echo "<td>".$cell."</td>";
echo "</tr>n";
}
echo "</table>n";

--
<Sigurd> a sprite is anything not static
<SRElysian> a sprite is a variable object
<TorMuck> a sprite is a fucking soda
<TorMuck> you god damn geekass bastards

Avatar
L'alsacien Strasbourg
Excuse moi Salagir, mais tu as a faire a un VRAI nul (du moins un vrai
débutant)
Voila le code que j'ai créé sur tes conseils,
mais y'a un truc qui doit pas aller

<?php
$fp = fopen("classeur.txt","r");
while (!feof($fp)) {
$tableau = file( $fp );
}
foreach ($tableau as $k=>$v)
$tableau[$k] = explode('|', $v);

echo "<table>n";
foreach ($tableau as $ligne) {
echo "t<tr>";
foreach($ligne as $cell)
echo "<td>".$cell."</td>";
echo "</tr>n";
}
echo "</table>n";

fclose($fp);
?>
Avatar
Salagir
On 29 Oct 2003 14:10:44 GMT, in fr.comp.lang.php,
L'alsacien Strasbourg wrote:
Voila le code que j'ai créé sur tes conseils,
mais y'a un truc qui doit pas aller


C'est vague comme erreur...

Bon, la fonction file() remplace tout, de l'ouverture du fichier à gérer
à sa lecture, donc tu peux virer les lignes avec le while, et les
fonctions d'accès au fichier.

remplace:
$fp = fopen("classeur.txt","r");
while (!feof($fp)) {
$tableau = file( $fp );
}


par:

$tableau = file("classeur.txt");

Et vire:
fclose($fp);


Sinon, n'oublie pas que tu as une description de toutes les fonctions
sur de site de php.net, en français.

--
++++++++ Zelda, Dragon Ball, Mana and my (art)work at www.salagir.com ++++++++
Dieu est très fort pour le RayTracing -+- Maxwell -+-

Avatar
L'alsacien Strasbourg
Maintenant aussi
peut on faire la même chose si :
Les séparateurs sont différents ? ("|" et "$")
et "coller" les éléments dans 3 variables différentes

à savoir de cette ligne
-={P.A.G}=-Draven|669078528$668468420
obtenir
$name = -={P.A.G}=-Draven
$tow= 669078528
$objf8468420

et bien sur faire le même tableau qu'avant ?
merci
Avatar
L'alsacien Strasbourg
Le propre des pros est de comprendre et de résoudre un problème mal posé.
En clair, ta réponse à parfaitement résolu mon problème.

Maintenant, y'aurait il un moyen de faire que l'affichage soit trié selon
le contenu de la 2ème colonne
Avatar
Jedi121
"L'alsacien Strasbourg" a écrit le 03/11/2003 :
Maintenant aussi
peut on faire la même chose si :
Les séparateurs sont différents ? ("|" et "$")
et "coller" les éléments dans 3 variables différentes

à savoir de cette ligne
-={P.A.G}=-Draven|669078528$668468420
obtenir
$name = -={P.A.G}=-Draven
$tow= 669078528
$objf8468420

et bien sur faire le même tableau qu'avant ?
merci


Tu refais un explode() :
$ch = "-={P.A.G}=-Draven|669078528$668468420";
list( $name, $tampon ) = explode( "|", $ch );
list( $tow, $obj ) = explode ( "$", $tampon );