Compter leslignes d'un fichier texte

Eléphant du PHP | 135 Messages

27 avr. 2006, 09:42

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
Des noeuds au cerveau!

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

27 avr. 2006, 11:19

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:

Eléphant du PHP | 135 Messages

27 avr. 2006, 12:56

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.
Des noeuds au cerveau!

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

27 avr. 2006, 13:31

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).';
?>

Eléphant du PHP | 135 Messages

27 avr. 2006, 13:43

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.
Des noeuds au cerveau!

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

27 avr. 2006, 13:59

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 ;)

Eléphant du PHP | 135 Messages

27 avr. 2006, 14:44

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.
Des noeuds au cerveau!