IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Ajouter une en-tête ou un mot sur la première ligne d'un fichier .txt


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2013
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2013
    Messages : 452
    Points : 66
    Points
    66
    Par défaut Ajouter une en-tête ou un mot sur la première ligne d'un fichier .txt
    Bonjour.

    En fait, j'ai un fichier ".txt" contenant une liste d'adresse mail disposée comme ceci:

    mail1@mail.com
    mail2@mailin.com
    mail3@mailit.com


    Mon problème c'est que je souhaiterais mettre comme en-tête le mot "EMAIL" de sorte à ce que le contenu du fichier ".txt" en question soit désormais comme suit:

    EMAIL
    mail1@mail.com
    mail2@mailin.com
    mail3@mailit.com


    Mais je ne sais pas comment m'y prendre. J'ai juste essayé de lire le fichier en faisant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    $fileSource = fopen("fichier.txt", 'r'); 
    ...
    ...
    ...
    fclose($fileSource);
    Comment ajouter à la première ligne du fichier le mot "EMAIL" considéré comme en-tête ???

    Merci de m'aider.

  2. #2
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 705
    Points : 43 785
    Points
    43 785
    Par défaut
    Si j'ai bien compris, tu veux ajouter une ligne contenant le mot EMAIL en début de ton fichier.

    Dans ce cas un code très simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <?php
    $contenu="EMAIL\n";
    $contenu.=file_get_contents('fichier.txt');
    file_put_contents('fichier.txt',$contenu);
    ?>
    file_get_contents va ouvrir le fichier passé en paramètre, et le charger entièrement dans la variable. file_put_contents va faire la même chose en l'écriture. Cela t'évite la gestion de fichier (ouverture, lecture/écriture, fermeture)

    Attention, si le fichier est gros, cette solution n'est pas adaptée, le contenu étant entièrement chargé dans une variable. Et aussi prendre en compte le fait qu'en cas de problème d'écriture, la source peut être perdue. Pour pallier ce risque, il faudrait dans ce cas écrire dans un nouveau fichier, puis supprimer la source avant de renommer le fichier destination avec le nom de la source.

    On peut ajouter facilement du contenu en fin de fichier, mais pour en ajouter en début (ou au milieu), il faut réécrire complètement celui-ci.
    Pour cela, il faudra donc :
    • ouvrir le fichier source en lecture
    • ouvrir le fichier de destination en écriture (donc dans ton cas créer un nouveau fichier)
    • écrire la ligne à ajouter dans le fichier de destination
    • faire une boucle de lecture jusqu'en fin de fichier source et copier le bloc lu dans le fichier de destination à chaque boucle (avec gestion des erreurs)
    • fermer les fichiers
    • supprimer le fichier source
    • renommer le fichier de destination avec le nom du fichier source.


    Dans ce cas, si ton fichier est un fichier texte, tu pourras utiliser fgets et fputs pour faire une lecture/écriture ligne par ligne. En cas de fichier binaire, il faudra utiliser un buffer, et boucler en lisant au maximum un nombre de caractère limité à la taille du buffer et ensuite écrire le nombre de caractères lus dans le fichier de destination jusqu'à avoir tout lu.

    Avec PHP, il y a peut-être aussi des outils de flux qui optimiseront ce que j'ai indiqué ci-dessus. les pros du PHP pourront complémenter ma réponse.

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2013
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2013
    Messages : 452
    Points : 66
    Points
    66
    Par défaut
    Bonjour et merci pour votre réponse.

    En fait, je veux dans un premier temps vérifier si la première ligne du fichier contient le mot clé "EMAIL". Si oui, ne rien faire mais sinon, c'est là qu'il faut lui ajouter le mot "EMAIL" comme en-tête.

    Vous comprenez mieux j'espère !!!???

    J'ai besoin de votre aide surtout à récupérer la toute première ligne du fichier afin d'effectuer la vérification et lui passer le mot "EMAIL" au cas où le fichier ne contiendrait pas de ce mot sur sa première ligne.

  4. #4
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 228
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 228
    Points : 8 487
    Points
    8 487
    Billets dans le blog
    17
    Par défaut
    Vous comprenez mieux j'espère !!!???
    Oui oui, on comprend ce que tu veux faire, quand tu donnes les infos

    J'ai besoin de votre aide surtout à récupérer la toute première ligne du fichier
    fopen() + fgets() => Tu obtiens la 1re ligne

    afin d'effectuer la vérification
    Tu peux faire une bête comparaison if (rtrim($row) === 'EMAIL') { ... ou utiliser strpos()
    rtrim() permettra de supprimer les caractères blancs en fin de ligne (ex. "\r\n")

    et lui passer le mot "EMAIL" au cas où le fichier ne contiendrait pas de ce mot sur sa première ligne.
    Pour cela se reporter à la réponse données plus haut.

    Si besoin donne-nous ton script implémentant cela pour qu'on puisse t'aider.

  5. #5
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2013
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2013
    Messages : 452
    Points : 66
    Points
    66
    Par défaut
    Merci beaucoup pour votre réponse. Grand merci

    Voici mon code final:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
    // Récupérer la 1ère ligne du fichier:
    $fileFirstLine = fgets(fopen("fichier.txt", 'r')); 
    // echo $fileFirstLine;
     
    // Vérifier si la première ligne du fichier importé ne contient pas le mot "EMAIL". Si non, on lui en ajoute:
    if (rtrim($fileFirstLine) !== 'EMAIL') {
    	$fileHeadTxt = "EMAIL\n";
    	$fileHeadTxt. = file_get_contents('fichier.txt');
    	$finalFileImported = file_put_contents('fichier.txt',$fileHeadTxt);
    	echo $finalFileImported;
    }
    Mais cela me retourne l'erreur suivante:
    Parse error: syntax error, unexpected '=' in C:\laragon\www\essaiii.php on line 9
    Pourtant selon moi, tout semble correct selon les conseils qui m'ont été donné.

    Aidez-moi à parfaire et corriger mon code s'il vous plaît.

  6. #6
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2013
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2013
    Messages : 452
    Points : 66
    Points
    66
    Par défaut
    J'ai vu l'erreur. Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 21
    Dernier message: 05/02/2018, 01h09
  2. Ajouter une DLL à mon java.library.path sur Ubuntu 14.04
    Par gelin dans le forum Eclipse Java
    Réponses: 0
    Dernier message: 09/01/2015, 11h19
  3. Réponses: 0
    Dernier message: 03/12/2013, 08h43
  4. Réponses: 0
    Dernier message: 17/01/2012, 15h54
  5. Réponses: 13
    Dernier message: 11/11/2008, 13h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo