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 :

Extraction valeur dans un tableau [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    242
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2003
    Messages : 242
    Points : 108
    Points
    108
    Par défaut Extraction valeur dans un tableau
    Bonjour,

    Je viens solliciter un peu d'aider auprès de vous car la je deviens dingue le REGEX une chose pas évidente du tout...

    Je possède la chaine suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    width: 93px; height: 70px; float: left; margin: 5px;
    Je souhaiterais effectuer une extraction de cette chaine en tableau afin d'obtenir :

    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
                [0] => Array
                    (
                        [0] => width: 93px
                        [1] => height: 70px
                        [2] => float: left
                        [3] => margin: 5px                    
                    )
     
                [1] => Array
                    (
                        [0] => width
                        [1] => height
                        [2] => float
                        [3] => margin    
                    )
                [2] => Array
                    (
                        [0] => 93
                        [1] => 70
                        [2] => left
                        [3] => 5    
                    )
    J'effectue "36" tests sans trop savoir vers où je vais.

    Voici un exemple ( qui ne fonctionne pas ):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_match_all('/(width|height|float):([^"]:*px;)/i', $style, $out);
    Je vous remercie d'avance pour votre aide et coup de pouce.
    Cordialement
    Kilian

  2. #2
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut,

    Y a plus simple que le regex pour le 1er tableau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
     
    $a = 'width: 93px; height: 70px; float: left; margin: 5px;';
    $b = explode(';', $a);
     
    ?>

  3. #3
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Allez je te file la soluce sans les regex :
    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
    <?php
     
    $a = 'width: 93px; height: 70px; float: left; margin: 5px;';
    $b = explode(';', $a);
    $c[0] = $b;
     
    $cut = function($v) use (&$c) {
       $parts = explode(':', $v);
       $c[1][] = trim($parts[0]);
       $c[2][] = trim($parts[1]);
    };
     
    array_map($cut, $b);
     
    // $c correspond à ton tableau final
     
    ?>

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    242
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2003
    Messages : 242
    Points : 108
    Points
    108
    Par défaut
    Wouaww ta fonction... Certaine fonction comme le "array_map" je ne connais pas du tout...
    En tout cas je vais lire ta proposition attentivement, essayer de la comprendre...
    Je te remercie beaucoup pour ton aide.
    A+
    Kilian

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    242
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2003
    Messages : 242
    Points : 108
    Points
    108
    Par défaut
    J'ai bien compris ta façon de faire, là on voit bien la différence entre un développeur pro et un "du dimanche" hihi...

    Merci beaucoup pour ton aide

  6. #6
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    Bonjour,

    Personnellement, je trouve ça aussi lisible en regex :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
    $str = 'width: 93px; height: 70px; float: left; margin: 5px;';
    $pattern = '/([^;]+): ([^;]+)/';
    preg_match_all($pattern, $str, $m);
    var_dump($m);
    • Avant de poser une question, n'hésitez pas à chercher dans la FAQ et les forums
    • Merci d'utiliser les balises de code (# dans l'éditeur)
    • N'oubliez pas de vous servir des boutons , et

    S.N.A.F.U

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    242
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2003
    Messages : 242
    Points : 108
    Points
    108
    Par défaut
    Cool merci comme cela j'ai 2 méthodes...
    Un gros merci à vous, à cet ambiance...
    L'informatique un monde d’échange...
    Merci

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

Discussions similaires

  1. [Débutant] Recherche conditionelle et extraction de valeurs dans un tableau
    Par juliematlab dans le forum MATLAB
    Réponses: 10
    Dernier message: 10/05/2011, 16h36
  2. Extraction valeur suivant plusieurs valeurs dans un tableau
    Par fabibou dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/07/2007, 19h02
  3. [Tableaux] Extraction de valeur dans un tableau
    Par pirouette_07 dans le forum Langage
    Réponses: 6
    Dernier message: 21/10/2005, 17h54
  4. [Tableaux]Ajouter des valeurs dans un tableau
    Par Antoine1183 dans le forum Collection et Stream
    Réponses: 13
    Dernier message: 03/04/2005, 13h41
  5. Décaler des valeurs dans un tableau
    Par sh2003 dans le forum Langage
    Réponses: 6
    Dernier message: 20/03/2004, 16h01

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