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 :

Découpage de chaines [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 221
    Points : 233
    Points
    233
    Par défaut Découpage de chaines
    Bonjour a tous et a toutes !

    Je viens a vous pour une question qui vous semblera (surement) simple mais qui pour moi est une galere !

    Je cherche a decouper la chaine selon le schema suivant : %(.*)% et que chaque element qui reponde a ce patern soit decoupe.

    Voici donc mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $string = '%new profil% %new town%';
    if (preg_match("/%new(.*)%/", $string,$matches,PREG_OFFSET_CAPTURE))
    {
           print_r($matches);
    }
    Quand je fait un print_r de cette donnee voila ce qu'elle me retourne :
    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
    16
     
    Array
    (
        [0] => Array
            (
                [0] => %new profil% %new town%
                [1] => 0
            )
     
        [1] => Array
            (
                [0] =>  profil% %new town
                [1] => 4
            )
     
    )
    J'aurais aimer avoir ceci comme formatage :
    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
    16
     
    Array
    (
        [0] => Array
            (
                [0] => new profil
                [1] => 0
            )
     
        [1] => Array
            (
                [0] =>  new town
                [1] => 4
            )
     
    )
    J'ai donc utiliser le define PREG_OFFSET_CAPTURE mais cela ne fonctionne pas comme je le souhaiterais ! Quelqu'un aurait-il une idee ?


    Je vous remercie beaucoup de vos futurs reponses !

  2. #2
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 104
    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 104
    Points : 8 222
    Points
    8 222
    Billets dans le blog
    17
    Par défaut
    Ton expression est gourmande. Pour corriger cela il faut rajouter l'option de recherche U (ungreedy) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_match_all("/%(new.*)%/U", $string, $matches, PREG_OFFSET_CAPTURE)
    Donne :

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    Array
    (
        [0] => Array
            (
                [0] => Array
                    (
                        [0] => %new profil%
                        [1] => 0
                    )
     
                [1] => Array
                    (
                        [0] => %new town%
                        [1] => 13
                    )
     
            )
     
        [1] => Array
            (
                [0] => Array
                    (
                        [0] => new profil
                        [1] => 1
                    )
     
                [1] => Array
                    (
                        [0] => new town
                        [1] => 14
                    )
     
            )
     
    )
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 221
    Points : 233
    Points
    233
    Par défaut
    Tout d'abord un énorme merci a toi ! j'étais vraiment dans la mauvaise voie !
    Après en ce qui concerne le coté gourmand c'est que j'ai simplifié a l'extrême mon code pour le site mais sinon les données réelles traitées sont beaucoup plus complexe et sont parsées avec une regex en conséquence !

    En tout cas merci encore ! ! !

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

Discussions similaires

  1. Découpage de chaine de caractères
    Par fabpeden dans le forum C
    Réponses: 3
    Dernier message: 07/05/2007, 11h50
  2. Un petit découpage de chaine
    Par Woodgate dans le forum Langage
    Réponses: 2
    Dernier message: 30/12/2006, 15h55
  3. Pl/Sql , 8i , découpage de chaine de caractères
    Par Youby dans le forum PL/SQL
    Réponses: 5
    Dernier message: 30/05/2006, 00h54
  4. Découpage de chaine
    Par vodevil dans le forum Langage
    Réponses: 2
    Dernier message: 18/12/2005, 17h25
  5. Découpage de chaine de caractère
    Par tcharles dans le forum C++
    Réponses: 11
    Dernier message: 23/08/2004, 14h34

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