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 :

Recherche ligne par ligne + affichage


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Décembre 2008
    Messages
    483
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 483
    Par défaut Recherche ligne par ligne + affichage
    Bonjour,

    Suite à mon précédent sujet, j'ai un petit problème.

    Voilà la situation :

    Je dois récupérer des parties spécifiques de mes mails(généralement les mails ont la même structure).

    Je procède donc par une lecture ligne à ligne du mail puis je récupère ce qui m'interesse :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    $result = explode( "\r\n", $contenu);
    
    	$i = 0;
    	$max = count($result);
    
    	//Initialisation
    	$desc = "";
    	
    	while($i < $max) {
    		if($result[$i++] == "DESCRIPTION:"){
    			while ($result[$i] != "SOLUTION:"){
    				$desc = $desc . $result[$i++];
    			}
    		}
    	}
    Ce code marche correctement et je parviens bien à récupérer ce que je souhaite dans la variable $desc.

    Le problème c'est que dans ce $desc, toutes les ligns sont attachées... je n'ai plus de sauts de lignes.

    Ca doit surement se jouer sur la ligne en gras du code, avec la concaténation de desc.

    Merci

  2. #2
    Membre Expert Avatar de jabbounet
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2009
    Messages
    1 909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 909
    Par défaut
    pourquoi ne pas utiliser grep?

    http://php.net/manual/fr/function.preg-grep.php

  3. #3
    Membre éclairé
    Inscrit en
    Décembre 2008
    Messages
    483
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 483
    Par défaut
    Euh je ne connais pas cette fonction pour tout te dire

    Elle serait plus pratique dans mon cas?

    Si on admet que mes mails ont généralement la même structure :

    INTRO
    ...
    DESCRIPTION
    ...
    SOLUTION
    ...
    CONCLUSION
    Ceci est contenu dans une variable $contenu.

    Si je veux récupérer ce qui se trouve entre DESCRIPTION et SOLUTION je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    preg_grep("INTRO.CONCLUSION",$contenu);

  4. #4
    Membre Expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Par défaut
    J'ai suivi un peu la suite de ton post précédent

    Pourquoi tu veux les sauts de ligne ?

    Sinon dans la concaténation, tu ajoutes les sauts de lignes !

  5. #5
    Membre éclairé
    Inscrit en
    Décembre 2008
    Messages
    483
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 483
    Par défaut
    Je souhaite les sauts de lignes car j'affiche après ma variable.

    Mais oui c'est vrai j'ai juste à ajouter un saut de lignes içi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $desc = $desc . $result[$i++] . '<br/>';
    Je pense finalement me contenter de cette solution, ça passe...

    Mais pour le grep, serait-ce plus efficace comme méthode dans ma situation ?

    Sinon autre question :

    Imaginons que la structure de mes mails reste la même, soit :

    INTRO
    ...
    DESCRIPTION
    ...
    SOLUTION
    ...
    CONCLUSION
    Mais que cette fois-ci, dans UN seul mail il y ait plusieurs fois cette structure. Il faudrai dans ce cas que je récupère ce que je souhaite autant de fois qu'il y a la structure précédente. Genre la structure du dessus, elle serai présente 8 fois dans mon mails il me faudrait 8 variables pour chaque partie.

    Je ne suis pas sûr d'être clair, en tout cas je vois pas trop comment procéder, car on suppose qu'on ne connais PAS le nombre de fois où la structure est présente.

  6. #6
    Membre Expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Par défaut
    Ca à l'air d'être une excellente idée de Jabbounet

    Pour preg_grep, tu peux essayer un truc du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $result = preg_grep("/^DESCRIPTION(\d)*SOLUTION$/", $contenu);
    normalement $result[0] contiendrait les textes entre DESCRIPTION et SOLUTION, $result[1] un deuxième de ce type etc, etc ...

  7. #7
    Membre Expert Avatar de jabbounet
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2009
    Messages
    1 909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 909
    Par défaut
    ou alors

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $between=substr($contents, strpos($contents, "DESCRIPTION"), strpos($contents, "SOLUTION")
    non testé je n'ai jamais fait de php.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 11/06/2009, 09h57
  2. Réponses: 11
    Dernier message: 11/05/2009, 20h29
  3. affichage ligne par ligne du fichier ascII
    Par khayate dans le forum VB.NET
    Réponses: 15
    Dernier message: 06/06/2007, 14h14
  4. [ Problème d'affichage de données ligne par ligne ]
    Par Arkoze dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 05/06/2007, 09h45
  5. Probleme affichage avec un GtkTextView (affichage ligne par ligne)
    Par Marmoccelle dans le forum GTK+ avec C & C++
    Réponses: 9
    Dernier message: 22/03/2007, 14h42

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