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 :

extraire toutes les occurences de type [©D©#D©] d'une chaine de caractère


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 25
    Points : 11
    Points
    11
    Par défaut extraire toutes les occurences de type [©D©#D©] d'une chaine de caractère
    Bonsoir,
    Est-il possible à l'aide des regex d'extraire d'une chaine toutes les occurences de type [©D#D©] ou # est un nombre et récupérer la liste de ces fameux nombre dans un tableau...

    question subsidiaire: si la réponse est "oui", comment faire?

    J'avoue patauger avec les Regex mais je me dis que ça doit pouvoir se faire avec...

    Merci d'avance!

  2. #2
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    Tu peux faire comme suit.

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <?php
    $pattern = "/\[©D(\d+)D©\]/msi";
    $texte   = "aaaa [©D12345D©] vvvvvvv [©D2017D©] nnnnn [©D05D©] wwwww [©D40832D©]  ";
    preg_match_all($pattern,$texte,$array);
    foreach($array[1] as $value) {
     print "$value<br/>";
    }
    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 25
    Points : 11
    Points
    11
    Par défaut
    je vais essayer ça de suite...

    merci beaucoup!!!

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 25
    Points : 11
    Points
    11
    Par défaut
    Ca marche à merveille! un immense merci!

    En fait j'ai le meme "soucis" pour un truc analogue, style extraire toutes les occurrences d'une chaine de type [©G#G©], [©C#C©] pour récupérer le # qui serait aussi un nombre.

    Je comprends comment faire en refaisant une paterne du type de celle proposée mais peut ont mixer les trois en une seule opération?

  5. #5
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    Essaie ça. Pas testé.

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <?php
    $pattern = "/\[©(D|G|C)(\d+)\\\]/msi";
    $texte   = "aaaa [©D12345D©] vvvvvvv [©D2017D©] nnnnn [©D05D©] wwwww [©D40832D©]  ";
    preg_match_all($pattern,$texte,$array);
    foreach($array[2] as $value) {
     print "$value<br/>";
    }
    [/QUOTE]
    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 25
    Points : 11
    Points
    11
    Par défaut
    dans la série je suis un boulet:

    le truc marche très bien avec la chaine proposée, mais pas du tout avec une chaine extraite d'une base de donnée...

    quand j'affiche la chaine test, avant de la traiter,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $texte   = "aaaa[©D6357©]vvvvvvv[©G2017©]nnnnn[©C05©]wwwww[©G40832©]";
    ca m'affiche ca:
    aaaa[©D6357©]vvvvvvv[©G2017©]nnnnn[©C05©]wwwww[©G40832©]
    et ça la traite bien...

    Si ca vient de ma base, ca m'affiche ce qui est écrit, sans rajouter de caractères ésotériques, et ça ne traite pas bien... bizarre?

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 25
    Points : 11
    Points
    11
    Par défaut
    autre question bête: pourquoi utilises tu $array[2] dans la seconde version et $array[1] dans la première?

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 25
    Points : 11
    Points
    11
    Par défaut
    [mode en apparté]
    Tu est un sacré mordu de calculatrice! Je regrette pour am part le fait que HP ai abandonné les calculettes... ahhh, la RPL...
    [/mode en apparté]

  9. #9
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    Dans une expression régulière, les ( ) sont appelées dans certains cas parenthèses capturantes. C'est à dire que les caractères qui sont "reconnus" sont stockés dans des tableaux.

    Le tableau 0 contient la chaine de caractères complète. Le tableau 1 contient les données reconnues du premier groupe de ( ), le tableau 2 le second groupe, etc... Dans le premier exemple il n'y avait qu'un groupe et dans le second deux. Les données "reconnues" étant dans le 2ème groupe, c'est le second tableau qui contient ces données.

    Pour ce qui est des problèmes de caractères, à ma grande honte, je n'y comprends pas grand chose.


    [mode en apparté]
    Oui. C'est mon unique défaut ! - le RPL j'aime pas trop car trop compliqué. C'est aussi vrai que les HP de nos jours n'ont pas grand chose à voir avec celles de la grande époque. La plus belle de toutes étant à mon avis la HP 67.
    [/mode en apparté]
    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

Discussions similaires

  1. Réponses: 0
    Dernier message: 04/02/2013, 14h03
  2. Retrouver toutes les occurences dans un memo
    Par johweb dans le forum Delphi
    Réponses: 2
    Dernier message: 09/06/2006, 15h44
  3. connaitre toutes les occurences d'une chaine
    Par semaj_james dans le forum C
    Réponses: 2
    Dernier message: 11/12/2005, 15h46
  4. Borland C++ 5.5 remplacer toutes les occurences
    Par cdelamarre dans le forum Autres éditeurs
    Réponses: 2
    Dernier message: 30/11/2005, 13h23
  5. replace() qui s'applique sur toutes les occurences
    Par Oluha dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 02/03/2005, 12h27

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