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 :

Mettre toutes les occurrences d'une expression dans une chaîne


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 14
    Points : 10
    Points
    10
    Par défaut Mettre toutes les occurrences d'une expression dans une chaîne
    Bonsoir,

    Je pense que ma requête ne correspond pas à 100% au titre que j'ai mis, mais je ne sais pas trop comment la formuler, si vous savez quelle est la formulation exacte, je suis preneur
    Soit l'exemple suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Posté le 10/11/12
    	Par Barrack Obama
    		I am the boss here
    			Pouces_verts: 5827    	 Pouces_rouges: 0
     
    Posté le 10/11/12
    	Par Mitt Romney
    		F*** this sh** I gonna work at McDo
    			Pouces_verts: 9984    	 Pouces_rouges: 0
     
    Posté le 11/11/12
    	Par Nicolas Sarkozy
    		I know that feeling, bro...
    			Pouces_verts: 1		Pouces_rouges: 0
    Je voudrais juste mettre toutes les dates dans une chaîne a la suite, j'ai déjà trouvé comment compter le nombre d'occurrences de dates mais je ne vois vraiment pas comment les regrouper, voici ce que j'ai écrit:
    preg_match ( $expression, $tous_les_avis, $chaine );
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $nombre_dates = mb_substr_count('|Post&eacute; le(.+?)<br />|', 'Post&eacute; le ');
    Je suis a court d'idées ^^'

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    avec preg_match_all() :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $pattern = '|([0-9]{2}\/[0-9]{2}\/[0-9]{2})|';
    $les_dates = preg_match_all($pattern, $tous_les_avis, $chaine );
     
    echo '<pre>';
    print_r ($chaine[0]);
    echo '</pre>';
    $toutes_les_dates = implode(';', $chaine[0]);
    echo $toutes_les_dates;

  3. #3
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 858
    Points : 6 556
    Points
    6 556
    Par défaut
    Bonjour,

    Tu ne peux pas utiliser de regex comme argument dans mb_substr_count.

    J'aurais fait comme jreaux62 pour procéder, si ce n'est pour la pattern. Car si Mitt propose à Barrack dans son message un rdv le 13/11/12 la nuit, seul, dans un parking, la pattern le matchera aussi.

    Je propose:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $pattern="|(?<=Post&acute;\sle\s) # test arrière positif (?<=...)
                                      # Il n'y a correspondance que si le motif de la date est (positif)
                                      # précèdé (arrière) du motif du test.
                                      # L'avantage est que le motif du test n'est pas inclus dans le résultat
              \d{2}/\d{2}/\d{2}       # Pas besoin de parenthèses capturantes $chaine[0] contient 
                                      # l'intégralité de la pattern (sans le test arrière bien sûr)
              |x"; // le modificateur x ça sert juste à sauter des lignes,
                   // à mettre des espaces et des commentaires dans une regex.
                   // Sinon ça donne ça: |(?<=Post&acute;\sle\s)\d{2}/\d{2}/\d{2}|
    Après tu peux améliorer en gérant les dates écrites de cette manière 13/3/12, 5/12/12 au lieu de 13/03/12 et 05/12/12, ou en prenant en compte que la date 41/21/12 n'existe pas, enfin je crois...
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    Merci beaucoup de vos réponses, elle m'ont bien aidées mon sujet est résolu.

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

Discussions similaires

  1. [Toutes versions] coller les données d'une plage d'une cellule dans une cellule d'une autre feuille[VBA]
    Par arthson dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/01/2012, 17h37
  2. Réponses: 11
    Dernier message: 06/05/2011, 22h55
  3. [POO] dans une classe, appeler une fonction dans une méthode
    Par arnaudperfect dans le forum Langage
    Réponses: 3
    Dernier message: 26/08/2007, 23h04
  4. Envoyer une formulaire dans une page dans une Frame
    Par zooffy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 29/06/2007, 10h13
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

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