Précédent   Forum du club des développeurs et IT Pro > PHP > Langage > Fichiers
Fichiers Forum d'entraide sur les fichiers avec PHP. Avant de poster -> FAQ fichiers et Sources fichiers
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 09/01/2013, 11h30   #1
Gannox
Membre du Club
 
Homme
Étudiant
Inscription : juin 2011
Messages : 89
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juin 2011
Messages : 89
Points : 65
Points : 65
Par défaut Saut de ligne indésirable

Bonjour,

Voici le souci : j'ai un fichier texte que je remplis quotidiennement avec un script PHP (crontab). Voici le contenu de ce fichier :

Code :
1
2
3
23
20 28 21 26 8 2 27 29 32 25 26 10 4 1 1 10 9 7 3 2 3
2 8 10 15
Lors de l'exécution du script, la première valeur (1ère ligne) est insérée à la fin du fichier. Affichage désiré :

Code :
1
2
3
0
20 28 21 26 8 2 27 29 32 25 26 10 4 1 1 10 9 7 3 2 3
2 8 10 15 23
Or, lors de cet ajout, un saut de ligne s'effectue juste avant, alors qu'il n'y a rien dans mon code qui spécifie un saut de ligne. Affichage actuel :

Code :
1
2
3
4
0
20 28 21 26 8 2 27 29 32 25 26 10 4 1 1 10 9 7 3 2 3
2 8 10 15 
23
Je voudrais donc trouver d'où cela vient et supprimer définitivement ce saut de ligne. Merci d'avance pour vos réponses.
Gannox est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2013, 12h41   #2
sabotage
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 16 452
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 16 452
Points : 21 261
Points : 21 261
Si tu ne nous montres pas ton code, nous ne pourrons pas t'aider.
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2013, 14h00   #3
Gannox
Membre du Club
 
Homme
Étudiant
Inscription : juin 2011
Messages : 89
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juin 2011
Messages : 89
Points : 65
Points : 65
Voici le script PHP en question. Si vous ne comprenez pas le rôle d'une des variables, faites le moi savoir.

Code php :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<?php
	include 'connexion.php';
 
	$sql = "SELECT COUNT(DISTINCT username) FROM radacct WHERE acctstoptime IS NULL";
	$req = mysqli_query($connect, $sql) or die('Erreur SQL : '.mysqli_error());
	while ($row = mysqli_fetch_row($req))
	{
		$actuel = $row[0];
	}
 
	$pic = fopen("/var/www/NewDialup/picsMois.txt", "r+");
	$fich = file("/var/www/NewDialup/picsMois.txt");
 
	if (date("H") == "00" && date("i") == "00")
	{
		$curseur = 0;
		for ($i = 0; $i < count($fich); $i++)
		{
			$curseur = $curseur + strlen($fich[$i]);
		}
		fseek($pic, $curseur);
		fwrite($pic, $fich[0]." ");
		str_replace($fich[0], "0\n", $fich);
 
		if (date("d") == "01")
		{
			$fich = substr($fich, 0, -1);
			fwrite($pic, "\n");
		}
	}
 
	if ($actuel > $fich[0])
	{
		str_replace($fich[0], "", $fich);
		fwrite($pic, $actuel."\n");
	}
 
	fclose($pic);
?>
Gannox est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2013, 10h14   #4
Celira
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 4 259
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 28
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java
Secteur : Industrie

Informations forums :
Inscription : avril 2007
Messages : 4 259
Points : 8 366
Points : 8 366
Sauf erreur de ma part, file() ajoute systématiquement des sauts de ligne à la fin des lignes. Pour éviter cela, il faut utiliser le flag FILE_IGNORE_NEW_LINES.
Donc :
Code :
$fich = file("/var/www/NewDialup/picsMois.txt", FILE_IGNORE_NEW_LINES);
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [CODEINLINE=php][/CODEINLINE]
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2013, 11h55   #5
Gannox
Membre du Club
 
Homme
Étudiant
Inscription : juin 2011
Messages : 89
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juin 2011
Messages : 89
Points : 65
Points : 65
Non aucun changement. Cependant, j'ai recréé mon fichier texte sous Windows et je l'ai inséré sous Linux et le saut de ligne en question a disparu !

Ce serait donc un problème d'encodage du fichier qui était en utf-8 ... Il faudrait que je le passe en ASCII mais je vois pas comment sur le coup.
Gannox est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2013, 13h24   #6
Celira
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 4 259
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 28
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java
Secteur : Industrie

Informations forums :
Inscription : avril 2007
Messages : 4 259
Points : 8 366
Points : 8 366
Plus qu'un problème d'encodage, c'est peut-être un problème de type de saut de ligne (entre \r\n sous Windows et \n sous Linux...)
Ou alors ton fichier d'origine avait une ligne supplémentaire vide à la fin...
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [CODEINLINE=php][/CODEINLINE]
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 15h12.


 
 
 
 
Partenaires

Hébergement Web