Bonjour,
Je voudrais récupérer les données d'un fichier texte composé de 5 données de
longueurs variables séparées par ";" par ligne.
J'obtiens un tableau des lignes entières mais je ne parviens pas à séparer
les données de chq ligne
l'instruction tab(split.....) produit unexpected '='
______________________________________________________________________________________
<? $Ffl = "listefleurs.txt";
if (file_exists($Ffl)) {
$tableau = file($Ffl);
while(list($cle,$val) = each($tableau)) {
echo $val."<br>";
tab=split($val,";");
echo tab(0);'<br>';
echo tab(1);'<br>';
echo tab(2);'<br>';
echo tab(3);'<br>';
echo tab(4);'<br>';
}
}
?>
______________________________________________________________________
J'ai aussi essayé eregi(";",$val) mais ça ne va pas non plus.
Un coup de main serait le bienvenu !
Merci
Je n'ai jamais utilisé each() que je trouve assez peu intuitif. Personnellement je préfère la construction foreach : http://fr3.php.net/manual/fr/control-structures.foreach.php
Un coup de main serait le bienvenu !
Si tu ne t'en sors toujours pas, donne-nous au moins en exemple trois ou quatre lignes extraites du fichier.
Je voudrais récupérer les données d'un fichier texte composé de 5 données de
longueurs variables séparées par ";" par ligne.
Je n'ai jamais utilisé each() que je trouve assez peu intuitif.
Personnellement je préfère la construction foreach :
http://fr3.php.net/manual/fr/control-structures.foreach.php
Un coup de main serait le bienvenu !
Si tu ne t'en sors toujours pas, donne-nous au moins en exemple trois ou
quatre lignes extraites du fichier.
Je n'ai jamais utilisé each() que je trouve assez peu intuitif. Personnellement je préfère la construction foreach : http://fr3.php.net/manual/fr/control-structures.foreach.php
Un coup de main serait le bienvenu !
Si tu ne t'en sors toujours pas, donne-nous au moins en exemple trois ou quatre lignes extraites du fichier.
CrazyCat
alainL wrote:
tab=split($val,";");
Si tu veux affecter la *variable* tab, c'est donc $tab = split()... Et mieux, $tab = explode(";", $val);
-- Réseau IRC Francophone: http://www.zeolia.net Aide et astuces webmasters : http://www.c-p-f.org Communauté Francophone sur les Eggdrops: http://www.eggdrop.fr
alainL wrote:
tab=split($val,";");
Si tu veux affecter la *variable* tab, c'est donc $tab = split()...
Et mieux, $tab = explode(";", $val);
--
Réseau IRC Francophone: http://www.zeolia.net
Aide et astuces webmasters : http://www.c-p-f.org
Communauté Francophone sur les Eggdrops: http://www.eggdrop.fr
"Olivier Miakinen" <om+ a écrit dans le message de groupe de discussion : 4798a3d0$
alainL wrote:
tab=split($val,";");
Si tu veux affecter la *variable* tab, c'est donc $tab = split()... Et mieux, $tab = explode(";", $val);
Bon sang, mais c'est bien sûr ! Et pour lire le premier élément, ce n'est pas tab(0), ni même $tab(0), mais $tab[0].
Merci pour vos réponses. Finalement, j'avais accouché de ça, qui marche mais qui me semble assez lourd .... Je vais regarder vos propositions. ____________________________________________________________________________ <? $Fnm = "listefleurs.txt"; $inF = fopen($Fnm,"r");
for ($i=1;$i<10;$i++) {
$ligne[$i] = fgets($inF, 4096); #lit jusqu'à n ou end echo $ligne[$i],'<br>' ; # controle: ecrit la ligne $donneesligne[$i]=split(";",$ligne[$i]); # découpe aux ; $numligne[$i]=$donneesligne[0]; $imgligne[$i]=$donneesligne[1]; $nvligne[$i]=$donneesligne[2]; $nfligne[$i]=$donneesligne[3]; $nffligne[$i]=$donneesligne[4]; echo $numligne[$i],'<br>'; echo $imgligne[$i],'<br>'; echo $nvligne[$i],'<br>'; echo $nfligne[$i],'<br>'; echo $nffligne[$i],'<br>';
$ptr = ftell($inF); # position du pointeur
$ptr = fseek($inF,$ptr+0); # modifiée : part de l'octet suivant
3 lignes de listefleurs.txt: 1;aconit_napel_2.jpg;Aconit napel;Aconit tue-loup;Crocus nudiflorus 2;aconit_tue_loup_2.jpg;Aconit tue-loup;Hépatique;Daboécie 3;adenostyle_2.jpg;Adénostyle;Horminelle;Daphné ___________________________________________________________________________________ Mon but : un quizz proposant des images (aléatoires) à reconnaître... Je reviendrai sûrement :-))) Bonne soirée alain
"Olivier Miakinen" <om+news@miakinen.net> a écrit dans le message de groupe
de discussion : 4798a3d0$1@neottia.net...
alainL wrote:
tab=split($val,";");
Si tu veux affecter la *variable* tab, c'est donc $tab = split()...
Et mieux, $tab = explode(";", $val);
Bon sang, mais c'est bien sûr ! Et pour lire le premier élément, ce
n'est pas tab(0), ni même $tab(0), mais $tab[0].
Merci pour vos réponses.
Finalement, j'avais accouché de ça, qui marche mais qui me semble assez
lourd ....
Je vais regarder vos propositions.
____________________________________________________________________________
<? $Fnm = "listefleurs.txt";
$inF = fopen($Fnm,"r");
for ($i=1;$i<10;$i++) {
$ligne[$i] = fgets($inF, 4096); #lit jusqu'à n ou end
echo $ligne[$i],'<br>' ; # controle: ecrit la ligne
$donneesligne[$i]=split(";",$ligne[$i]); # découpe aux ;
$numligne[$i]=$donneesligne[0];
$imgligne[$i]=$donneesligne[1];
$nvligne[$i]=$donneesligne[2];
$nfligne[$i]=$donneesligne[3];
$nffligne[$i]=$donneesligne[4];
echo $numligne[$i],'<br>';
echo $imgligne[$i],'<br>';
echo $nvligne[$i],'<br>';
echo $nfligne[$i],'<br>';
echo $nffligne[$i],'<br>';
$ptr = ftell($inF); # position du pointeur
$ptr = fseek($inF,$ptr+0); # modifiée : part de l'octet suivant
3 lignes de listefleurs.txt:
1;aconit_napel_2.jpg;Aconit napel;Aconit tue-loup;Crocus nudiflorus
2;aconit_tue_loup_2.jpg;Aconit tue-loup;Hépatique;Daboécie
3;adenostyle_2.jpg;Adénostyle;Horminelle;Daphné
___________________________________________________________________________________
Mon but : un quizz proposant des images (aléatoires) à reconnaître...
Je reviendrai sûrement :-)))
Bonne soirée
alain
"Olivier Miakinen" <om+ a écrit dans le message de groupe de discussion : 4798a3d0$
alainL wrote:
tab=split($val,";");
Si tu veux affecter la *variable* tab, c'est donc $tab = split()... Et mieux, $tab = explode(";", $val);
Bon sang, mais c'est bien sûr ! Et pour lire le premier élément, ce n'est pas tab(0), ni même $tab(0), mais $tab[0].
Merci pour vos réponses. Finalement, j'avais accouché de ça, qui marche mais qui me semble assez lourd .... Je vais regarder vos propositions. ____________________________________________________________________________ <? $Fnm = "listefleurs.txt"; $inF = fopen($Fnm,"r");
for ($i=1;$i<10;$i++) {
$ligne[$i] = fgets($inF, 4096); #lit jusqu'à n ou end echo $ligne[$i],'<br>' ; # controle: ecrit la ligne $donneesligne[$i]=split(";",$ligne[$i]); # découpe aux ; $numligne[$i]=$donneesligne[0]; $imgligne[$i]=$donneesligne[1]; $nvligne[$i]=$donneesligne[2]; $nfligne[$i]=$donneesligne[3]; $nffligne[$i]=$donneesligne[4]; echo $numligne[$i],'<br>'; echo $imgligne[$i],'<br>'; echo $nvligne[$i],'<br>'; echo $nfligne[$i],'<br>'; echo $nffligne[$i],'<br>';
$ptr = ftell($inF); # position du pointeur
$ptr = fseek($inF,$ptr+0); # modifiée : part de l'octet suivant
3 lignes de listefleurs.txt: 1;aconit_napel_2.jpg;Aconit napel;Aconit tue-loup;Crocus nudiflorus 2;aconit_tue_loup_2.jpg;Aconit tue-loup;Hépatique;Daboécie 3;adenostyle_2.jpg;Adénostyle;Horminelle;Daphné ___________________________________________________________________________________ Mon but : un quizz proposant des images (aléatoires) à reconnaître... Je reviendrai sûrement :-))) Bonne soirée alain
CrazyCat
Je reviens vite fait sur cette discussion pour apporter quelques précisions.
N'est pas forcémment disponible sur tous les serveurs, mais c'est effectivement la solution la plus simple.
Je n'ai jamais utilisé each() que je trouve assez peu intuitif. Personnellement je préfère la construction foreach : http://fr3.php.net/manual/fr/control-structures.foreach.php
Une boucle while sur un each() est plus rapide d'après des tests que j'avais lu (je tacherais de retrouver le lien).
alainL wrote:
<? $Fnm = "listefleurs.txt"; $inF = fopen($Fnm,"r"); for ($i=1;$i<10;$i++) {
$ligne[$i] = fgets($inF, 4096); #lit jusqu'à n ou end echo $ligne[$i],'<br>' ; # controle: ecrit la ligne $donneesligne[$i]=split(";",$ligne[$i]); # découpe aux ; $ptr = ftell($inF); # position du pointeur $ptr = fseek($inF,$ptr+0); # modifiée : part de l'octet suivant } fclose($inF); ?>
C'est très lourd comme code, du moins très peu optimisé. Tout d'abord, utilise plutôt explode() que split(), tu n'as pas besoin de la puissance des regexps. Ensuite, forcer le nombre de lignes n'est pas une très bonne idée.
Pour ma part, je ferais: <? $inF = fopen('listefleurs.txt', 'r'); $donnees = array(); while(!feof($inF) { $ligne = fgets($inF, 4096); $donnes[] = explode(";", $ligne); } fclose($inF); ?>
N'est pas forcémment disponible sur tous les serveurs, mais c'est
effectivement la solution la plus simple.
Je n'ai jamais utilisé each() que je trouve assez peu intuitif.
Personnellement je préfère la construction foreach :
http://fr3.php.net/manual/fr/control-structures.foreach.php
Une boucle while sur un each() est plus rapide d'après des tests que
j'avais lu (je tacherais de retrouver le lien).
alainL wrote:
<? $Fnm = "listefleurs.txt";
$inF = fopen($Fnm,"r");
for ($i=1;$i<10;$i++) {
$ligne[$i] = fgets($inF, 4096); #lit jusqu'à n ou end
echo $ligne[$i],'<br>' ; # controle: ecrit la ligne
$donneesligne[$i]=split(";",$ligne[$i]); # découpe aux ;
$ptr = ftell($inF); # position du pointeur
$ptr = fseek($inF,$ptr+0); # modifiée : part de l'octet suivant
}
fclose($inF); ?>
C'est très lourd comme code, du moins très peu optimisé.
Tout d'abord, utilise plutôt explode() que split(), tu n'as pas besoin
de la puissance des regexps.
Ensuite, forcer le nombre de lignes n'est pas une très bonne idée.
Pour ma part, je ferais:
<?
$inF = fopen('listefleurs.txt', 'r');
$donnees = array();
while(!feof($inF) {
$ligne = fgets($inF, 4096);
$donnes[] = explode(";", $ligne);
}
fclose($inF);
?>
N'est pas forcémment disponible sur tous les serveurs, mais c'est effectivement la solution la plus simple.
Je n'ai jamais utilisé each() que je trouve assez peu intuitif. Personnellement je préfère la construction foreach : http://fr3.php.net/manual/fr/control-structures.foreach.php
Une boucle while sur un each() est plus rapide d'après des tests que j'avais lu (je tacherais de retrouver le lien).
alainL wrote:
<? $Fnm = "listefleurs.txt"; $inF = fopen($Fnm,"r"); for ($i=1;$i<10;$i++) {
$ligne[$i] = fgets($inF, 4096); #lit jusqu'à n ou end echo $ligne[$i],'<br>' ; # controle: ecrit la ligne $donneesligne[$i]=split(";",$ligne[$i]); # découpe aux ; $ptr = ftell($inF); # position du pointeur $ptr = fseek($inF,$ptr+0); # modifiée : part de l'octet suivant } fclose($inF); ?>
C'est très lourd comme code, du moins très peu optimisé. Tout d'abord, utilise plutôt explode() que split(), tu n'as pas besoin de la puissance des regexps. Ensuite, forcer le nombre de lignes n'est pas une très bonne idée.
Pour ma part, je ferais: <? $inF = fopen('listefleurs.txt', 'r'); $donnees = array(); while(!feof($inF) { $ligne = fgets($inF, 4096); $donnes[] = explode(";", $ligne); } fclose($inF); ?>