Compter le nombre de lignes "non vides" dans un txt

Bonjour,

J’utilise un script PHP permettant aux visiteurs de mon site de s’inscrire dans une newsletter. Leur mail s’inscrit dans un fichier contacts.txt.
Problème, si quelqu’un se désinscrit, ça fait un ligne vide dans le fichier, qui ne sera pas remplacée.
J’aimerai pouvoir compter le nombre d’inscrits à ma newsletter. Pour cela, j’ai fait le code suivant :

          <?php 

$f = 'newsletter/admin/contacts.txt'; 
if(file_exists($f)) { 
    $tab = file($f);  // place le fichier dans un tableau 
    $nb = count($tab);    // compte le nombre de ligne 
echo " Il y a actuellement ".$nb." inscrits";  
} 


?>  

Mais ce code me compte aussi les lignes vides. A y être, le plus sûr serait de faire qu’il n’y ai pas de lignes vides, mais le code pour la newsletter est un peu long à mettre…

Merci d’avance.

pas mal ça :slight_smile: et si quelqu’un tape www.tonsite.com… il peut lire le contenu du fichier et spammer les gens :slight_smile:

Pour ton problème, deux choix :

  1. sur ton $tab, tu fais un parcours : $nb = 0; foreach ($tab as $t) {if (trum($t) != ‘’) ++$nb;}
  2. dans un fichier à côté, un compteur de nombre d’enregistrements.

Le dossier où est le txt est protégé.
JE fais ça comment dans le code ? I’am a newbie !!

cf. le bout de ligne hein :slight_smile:

IL me sort une erreur : Call to undefined function: trum()

Voilà le code que j’y ai mis pour avoir cette erreur :

          <?php 

$f = 'newsletter/admin/contacts.txt'; 
if(file_exists($f)) { 
    $tab = file($f);  // place le fichier dans un tableau 
    $$nb = 0; foreach ($tab as $t) {if (trum($t) != '') ++$nb;}    // compte le nombre de ligne 
echo " Il y a actuellement ".$nb." inscrits";  
} 


?>  

Et ça ne posera pas de problème si j’ai une ligne vide au milieu ?

En tous cas, merci.
Edité le 29/08/2007 à 08:49

je ne connais pas php, mais dans les autres langages la fonction s’appelle trim()
elle supprime les espaces en début et en fin de chaine de caracteres.

faute de frappe?

Effectivement, c’est bien ça, il y avait une faute de frappe.

et c’est pas $$nb, mais $nb :slight_smile:

Oui, maintenant, ça marche nickel. Merci.