Bonjour,
J'essaie de récupérer un array depuis un fichier text avec la fonction
explode().
Le fichier txt est du style:
----------------------
May 18, 2006|*|bjones|*|Encore un petit message!!!!!!!|*|
May 18, 2006|*|bjones|*|coucou. this is a test!|*|
-----------------
ma fonction en php est la suivante:
---------------
$entries = "../entries.txt";
$filesize = filesize($entries);
$delimiter = "|*|";$fp =
fopen($entries,"rb");
$content = @fread($fp,$filesize);fclose($fp);
$content = trim($content);
$lines = explode($delimiter,$content);
echo '<pre>';
print_r($lines);
echo '</pre>';
if ($filesize == 0) {$total = 0;}
else {$total = count($lines);}
echo $total;
-----------------
et j'obtiens:
------------------
Array
(
[0] => May 18, 2006
[1] => bjones
[2] => Encore un petit message!!!!!!!
[3] =>
May 18, 2006
[4] => bjones
[5] => coucou. this is a test!
[6] =>
)
7
--------------------
J'aimerais supprimer le retour chariot a la fin de
chaque ligne du fichier txt et la fonction trim() ou rtrim() n'a pas l'air
de fonctionner ici.
Une idee ou est le pb.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Olivier Miakinen
Le fichier txt est du style: ---------------------- May 18, 2006|*|bjones|*|Encore un petit message!!!!!!!|*| May 18, 2006|*|bjones|*|coucou. this is a test!|*| ----------------- ma fonction en php est la suivante: --------------- [...] $fp = fopen($entries,"rb"); $content = @fread($fp,$filesize);fclose($fp);
$content = trim($content); $lines = explode($delimiter,$content); [...] J'aimerais supprimer le retour chariot a la fin de chaque ligne du fichier txt et la fonction trim() ou rtrim() n'a pas l'air de fonctionner ici.
Normal, trim() et rtrim() ne suppriment aucun caractère en milieu de chaîne.
Tu peux remplacer : $content = trim($content);
par : $content = str_replace(array("r", "n"), "", $content);
Et si tu es sûr que file_get_contents() retourne toujours un simple "n" comme fin de ligne, c'est encore plus simple : $content = str_replace("n", "", $content);
Tu peux alors tout écrire en une seule ligne : $content = str_replace("n", "", file_get_contents($entries));
Le fichier txt est du style:
----------------------
May 18, 2006|*|bjones|*|Encore un petit message!!!!!!!|*|
May 18, 2006|*|bjones|*|coucou. this is a test!|*|
-----------------
ma fonction en php est la suivante:
---------------
[...]
$fp = fopen($entries,"rb");
$content = @fread($fp,$filesize);fclose($fp);
$content = trim($content);
$lines = explode($delimiter,$content);
[...]
J'aimerais supprimer le retour chariot a la fin de
chaque ligne du fichier txt et la fonction trim() ou rtrim() n'a pas l'air
de fonctionner ici.
Normal, trim() et rtrim() ne suppriment aucun caractère en milieu de chaîne.
Tu peux remplacer :
$content = trim($content);
par :
$content = str_replace(array("r", "n"), "", $content);
Et si tu es sûr que file_get_contents() retourne toujours un simple "n"
comme fin de ligne, c'est encore plus simple :
$content = str_replace("n", "", $content);
Tu peux alors tout écrire en une seule ligne :
$content = str_replace("n", "", file_get_contents($entries));
Le fichier txt est du style: ---------------------- May 18, 2006|*|bjones|*|Encore un petit message!!!!!!!|*| May 18, 2006|*|bjones|*|coucou. this is a test!|*| ----------------- ma fonction en php est la suivante: --------------- [...] $fp = fopen($entries,"rb"); $content = @fread($fp,$filesize);fclose($fp);
$content = trim($content); $lines = explode($delimiter,$content); [...] J'aimerais supprimer le retour chariot a la fin de chaque ligne du fichier txt et la fonction trim() ou rtrim() n'a pas l'air de fonctionner ici.
Normal, trim() et rtrim() ne suppriment aucun caractère en milieu de chaîne.
Tu peux remplacer : $content = trim($content);
par : $content = str_replace(array("r", "n"), "", $content);
Et si tu es sûr que file_get_contents() retourne toujours un simple "n" comme fin de ligne, c'est encore plus simple : $content = str_replace("n", "", $content);
Tu peux alors tout écrire en une seule ligne : $content = str_replace("n", "", file_get_contents($entries));
Florian Sinatra
*Olivier Miakinen* @ 18/05/2006 22:57 :
J'aimerais supprimer le retour chariot a la fin de chaque ligne du fichier txt et la fonction trim() ou rtrim() n'a pas l'air de fonctionner ici.
Normal, trim() et rtrim() ne suppriment aucun caractère en milieu de chaîne.
Tu peux remplacer : $content = trim($content);
par : $content = str_replace(array("r", "n"), "", $content);
Si ca peut servir à quelqu'un, j'ai écrit une fonction qui fait un peu le boulot de trim à l'intérieur d'une chaîne:
/* enlève les caractères suivants en début et fin de chaîne, et remplace leurs doublons dans la chaîne par un espace " " (ASCII 32 (0x20)), un espace ordinaire. "t" (ASCII 9 (0x09)), une tabulation. "n" (ASCII 10 (0x0A)), une nouvelle ligne (line feed). "r" (ASCII 13 (0x0D)), un retour chariot (carriage return). "