Page 1 sur 1

Compter leslignes d'un fichier texte

Posté : 27 avr. 2006, 09:42
par Davee
Bonjour
Y a-t-il une fonction qui permette de compter les lignes d'un fichier texte.
La fonction file permet de les lire une à une mais il faudrait que je puisse les compter avant pour faire une boucle .

Merci d'avance.

David

Posté : 27 avr. 2006, 11:19
par ouckileou
file -- Lit le fichier et renvoie le résultat dans un tableau
[...]
Chaque élément du tableau correspond à une ligne du fichier, et les retour-chariots sont placés en fin de ligne.
:idea: compter le nombre de cellules :idea:

Posté : 27 avr. 2006, 12:56
par Davee
ouf! J'ai trouvé un petit truc qui permet de compter les lignes

Code : Tout sélectionner

function LineCount($fileName) { $fileCount = -1; $h = @fopen($fileName, 'r'); if ($h) { while (!feof($h)) { fgets($h, 4096); // Voir remarque $fileCount++; } fclose($h); } return($fileCount); }
et ça marche en plus.

Merci ouckileou, la fonction file expliquée come ça c'est nettement plus compréhensible. :)

david.

Posté : 27 avr. 2006, 13:31
par ouckileou
Je n'ai fait que citer la documentation :D

Mais en fait tu avais plus simple avec file() (c'était ça la piste, c'était peut-être trop succinct ma phrase et mes ampoules...)
<?php
$fich = 'fichier.txt';

$tabFich = file($fich);

$nbLignes = count($tabFich);

echo 'le fichier fait '.$nbLignes.' ligne(s).';
?>

Posté : 27 avr. 2006, 13:43
par Davee
ha oui là en effet c'est nettement plus simple. Je crois que je vais prendre celui-là c'est quand même mieux.

Merci.

David.

Posté : 27 avr. 2006, 13:59
par ouckileou
Ce code peut donc te servir à récupérer le nombre de lignes, mais est-ce que tu en as réellement besoin ?

Parceque sinon une boucle foreach() sur le tableau renvoyé fonctionnera aussi, quel que soit le nombre de lignes, connu ou inconnu :
<?php
$fich = 'fichier.txt';

// on récupère le fichier dans un tableau (1 ligne par cellule)
$tabFich = file($fich);

// affichage du tableau
foreach($tabFich as $numeroLigne => $contenuLigne) {
   echo $numeroLigne.' : '.$contenuLigne.'<br />';
}
?>
Enfin si tu as eu tout ce que tu voulais tu peux taguer Résolu ;)

Posté : 27 avr. 2006, 14:44
par Davee
Pourquoi j'y ai pas penser plus tôt. (peut_être parce que j'y connait rien)
Les bras m'en tombent sur le cul.
Voilà le code final (qui peut encore être un peu racourci mais après on va dire que je travail pas) :D
  <?php
    $chemin = 'sousmenu/';
	$fich = $chemin.'texte.txt';
	$tabFich = file($fich);
	foreach($tabFich as $numeroLigne => $contenuLigne) {
   echo '<a class="super" href="#"> '.$contenuLigne.'</a><br />';
	}
  ?>
au départ mon code faisait 20 lignes
bon je risque d'avoir un petit problème avec les liens mais je vais fouiller un peu.

ouckileou je te doit une grosse chandelle.
merci encore.

David.