US An english version of this website is available, would you like to check it out ?

YES | NO, stay on the french website


FR Une version anglophone du site est disponible, souhaitez-vous la consulter ?

OUI | NON, rester sur le site français

Close / Fermer

Fin de tableau

01/11/2006 20:12 par Le Fou | Signaler un contenu abusif
Salut,

[Débutant en PHP]
J'ai un fichier texte qui s'appelle "liste_messages.txt" et qui contient :
message_1.txt
message_2.txt

sans espace après chaque ligne et sans retour chariot après la dernière
ligne.

J'ai aussi 2 fichiers texte dont les noms sont ceux contenus dans le fichier
précédent.
Le but du jeu :
- Lire le fichier "liste_messages.txt", mettre ses lignes dans un tableau,
trier le tableau en ordre inverse et récupérer ensuite la valeur de chaque
ligne du tableau (donc le nom du message) pour aller lire et afficher ce
message.
Voici mon code :

<?php
$listMsg = file("news/liste_messages.txt");
arsort ($listMsg);
while ( list( $numeroLigne, $nomMsg ) = each( $listMsg ) ) {
echo "<B>Ligne $numeroLigne:</B> $nomMsg" . "toto<br>";
$fichier = fopen("news/$nomMsg", "r");
$titreMsg = fgets($fichier, 4096);
$dateMsg = fgets($fichier, 4096);
/ / à ce niveau je ne suis pas à la fin du fichier mais je ne veux pas
afficher la suite
echo "<h2>$titreMsg</h2>";
echo "<p class=\"date\">$dateMsg</p>";
fclose ($fichier);
}
?>

Le programme m'affiche bien :

Ligne 1: message_2.txttoto
- Le titre
- La date
Ligne 0: message_1.txt toto

et ensuite :
Warning: fopen(news/message_1.txt ) [function.fopen]: failed to open stream:


Parceque si vous remarquez bien, il y a un caractère à la fin du texte
"message_1.txt", on le voit bien quand j'écris "toto" derrière, qui est
censé être collé.
Quel est ce caractère ?
- Un espace (qui vient d'où) ?
- Une marque de fin de tableau ?
- Une marque de fin de fichier ?
Comment l'enlever pour retrouver le nom exact du fichier à ouvrir ?
Merci.

--
A'tchao

Le Fou
http://gloupclub.free.fr/
http://www.ffessm-cd84.com/
http://ehiller.club.fr/
email Suivre cette discussionRéponses Lire les 4 réponsesReplies Répondre

Lire les réponses

#1 Olivier Miakinen
01/11/2006 22h42 | Contenu abusif


$fichier = fopen("news/$nomMsg", "r");
$titreMsg = fgets($fichier, 4096);
$dateMsg = fgets($fichier, 4096);

Ligne 1: message_2.txttoto
Ligne 0: message_1.txt toto

Parceque si vous remarquez bien, il y a un caractère à la fin du texte
"message_1.txt", on le voit bien quand j'écris "toto" derrière, qui est
censé être collé.
Quel est ce caractère ?
- Un espace (qui vient d'où) ?
- Une marque de fin de tableau ?
- Une marque de fin de fichier ?


C'est le caractère newline (\n), ainsi qu'on peut le comprendre si on
lit la doc en anglais, mais qui est incompréhensible dans la version
française.
http://fr2.php.net/manual/en/function.fgets.php
http://fr2.php.net/manual/fr/function.fgets.php

Comment l'enlever pour retrouver le nom exact du fichier à ouvrir ?


Par exemple :
$fichier = fopen("news/$nomMsg", "r");
$titreMsg = rtrim(fgets($fichier));
$dateMsg = rtrim(fgets($fichier));
fclose ($fichier);

Tu peux faire aussi, en une seule ligne :
list($titreMsg, $dateMsg) explode("\n", file_get_contents("news/$nomMsg"));

 

Questions similaires