[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>\n";
$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>\n";
echo "<p class=\"date\">$dateMsg</p>\n";
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/
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"));
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"));
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"));
davel_x
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.
http://fr2.php.net/trim ça devrait aider, même si ça n'explique pas le pourquoi du comment. :)
-- **davel** http://www.davel.fr/blog/
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.
http://fr2.php.net/trim
ça devrait aider, même si ça n'explique pas le pourquoi du comment. :)
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.
http://fr2.php.net/trim ça devrait aider, même si ça n'explique pas le pourquoi du comment. :)
-- **davel** http://www.davel.fr/blog/
Le Fou
Olivier Miakinen a écrit :
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),
C'est effectivement le caractère n, code ascii 0A (vu en utilisant bin2hex)
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);
Le problème c'est que ce n'est pas là qu'il me gène mais ici : $listMsg = file("news/liste_messages.txt"); arsort ($listMsg); while ( list( $numeroLigne, $nomMsg ) = each( $listMsg ) ) {...
C'est $nomMsg qui comporte ce caractère mais uniquement en lisant la dernière ligne, alors que le fichier "liste_messages.txt" contient plusieurs lignes (donc avec un n).
Mais peu importe, comme toi et davel_x me l'avez suggéré, "trim" est parfaitement adapté pour régler ce problème. Je n'y avais pas pensé car dans la doc que j'avais, qui datait de 2001, il était marqué : "trim -- Supprime les espaces "en début et fin de chaîne" et on n'y parlait pas "d'autres caractères"... C'est ballot, hein ? ;-)
Merci à vous.
-- A'tchao
Le Fou http://gloupclub.free.fr/ http://www.ffessm-cd84.com/ http://ehiller.club.fr/
Olivier Miakinen a écrit :
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),
C'est effectivement le caractère n, code ascii 0A (vu en utilisant bin2hex)
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);
Le problème c'est que ce n'est pas là qu'il me gène mais ici :
$listMsg = file("news/liste_messages.txt");
arsort ($listMsg);
while ( list( $numeroLigne, $nomMsg ) = each( $listMsg ) ) {...
C'est $nomMsg qui comporte ce caractère mais uniquement en lisant la
dernière ligne, alors que le fichier "liste_messages.txt" contient plusieurs
lignes (donc avec un n).
Mais peu importe, comme toi et davel_x me l'avez suggéré, "trim" est
parfaitement adapté pour régler ce problème.
Je n'y avais pas pensé car dans la doc que j'avais, qui datait de 2001, il
était marqué :
"trim -- Supprime les espaces "en début et fin de chaîne"
et on n'y parlait pas "d'autres caractères"... C'est ballot, hein ? ;-)
Merci à vous.
--
A'tchao
Le Fou
http://gloupclub.free.fr/
http://www.ffessm-cd84.com/
http://ehiller.club.fr/
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),
C'est effectivement le caractère n, code ascii 0A (vu en utilisant bin2hex)
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);
Le problème c'est que ce n'est pas là qu'il me gène mais ici : $listMsg = file("news/liste_messages.txt"); arsort ($listMsg); while ( list( $numeroLigne, $nomMsg ) = each( $listMsg ) ) {...
C'est $nomMsg qui comporte ce caractère mais uniquement en lisant la dernière ligne, alors que le fichier "liste_messages.txt" contient plusieurs lignes (donc avec un n).
Mais peu importe, comme toi et davel_x me l'avez suggéré, "trim" est parfaitement adapté pour régler ce problème. Je n'y avais pas pensé car dans la doc que j'avais, qui datait de 2001, il était marqué : "trim -- Supprime les espaces "en début et fin de chaîne" et on n'y parlait pas "d'autres caractères"... C'est ballot, hein ? ;-)
Merci à vous.
-- A'tchao
Le Fou http://gloupclub.free.fr/ http://www.ffessm-cd84.com/ http://ehiller.club.fr/
Le Fou
davel_x a écrit :
http://fr2.php.net/trim ça devrait aider, même si ça n'explique pas le pourquoi du comment. :)
Pile-poil ! Merci.
-- A'tchao
Le Fou http://gloupclub.free.fr/ http://www.ffessm-cd84.com/ http://ehiller.club.fr/
davel_x a écrit :
http://fr2.php.net/trim
ça devrait aider, même si ça n'explique pas le pourquoi du comment. :)
Pile-poil ! Merci.
--
A'tchao
Le Fou
http://gloupclub.free.fr/
http://www.ffessm-cd84.com/
http://ehiller.club.fr/