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

EDI, CMS, Outils, Scripts et API PHP Discussion :

array $matches[0] / $matches[1], récupérer l'une des valeurs du tableau


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 76
    Points : 54
    Points
    54
    Par défaut array $matches[0] / $matches[1], récupérer l'une des valeurs du tableau
    Bonjour à tous,

    Je suis confronté à un petit soucis, j'utilise la fonction preg_match_all() qui retourne un tableau $matches.

    Avec ce que j'ai pu voir sur cette fonction il s'avère que le tableau (array) $matches[1] n'est pas tout à fait le genre de tableau que l'on rencontre. Habituellement si le tableau est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $tableau = array ('1' => 'a', '2' => 'b', '3' => 'c');
    echo $tableau[3];
    devrait afficher : 'c'

    Du coup là j'ai un petit soucis parce que j'aimerais bien pour aller cherche une des valeur du tableau notamment pour les traiter séparément les unes des autres et en faire ce qu'il me plaît dans une base de données sql.

    J'ai bien tenté de faire$matches[3], $matches[4], ....; $matches[n] mais évidemment ça ne fonctionne pas parce que $matches[0] / $matches[1] ne sont pas des tableaux ordinaires.

    Du coup y aurait-il une fonction permettant de séparer les valeurs les unes des autres ?

    petit info j'utilise le code suivant pour récupérer sous forme de valeurs et non d'un tableau :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    foreach($matches[1] as $key=>$value) {echo $value;}
    J'annonce : $value[1,2,....,n] ne fonctionne pas...

    Merci d'avance !

    Globolite

  2. #2
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 274
    Points
    3 274
    Par défaut
    Peut tu afficher ce que contient exactement matches ?

    Sinon, si je pense avoir bien compris ton problème; il faut parcourir récursivement ton tableau :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function parcoursRecursif($array) {
        foreach ($array as $key => $value) {
            if (is_array($value)) {
                parcoursRecursif($value);
            } else {
                echo $key . " : " . $value;
            }
        }
    }
     
    parcoursRecursif($matches);
    Un message utile vous a aidé ? N'oubliez pas le

    www.simplifions.fr - Simplifier vos comptes entre amis !

  3. #3
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    En général sur un preg_match_all, on ne connait pas d'avance le nombre d'éléments qu'on va recuperer et donc on fait un boucle foreach et on n'appelle pas directement une des valeurs.

    Si tu connais d'avance le nombre d'éléments que tu vas recuperer, tu peux toutefois les appeller directement $matches[1][0], $matches[1][1] etc.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 76
    Points : 54
    Points
    54
    Par défaut
    Je n'ai pas encore tenté ta solution, néanmoins je peux déjà te donner ce que m'affiche $matches, $matches[0] et $matches[1] :

    Voici le code :

    Pour $matches[1]

    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
    <?php
     
    $html = "
    <td><h4>n° de code</h4>LM03695</td>
    <td><h4>n° systeme</h4>KG63208</td>
    <td><h4>n° de code</h4>LM96325</td>
    ";
     
    $regex = "!<td><h4>n° de code</h4>([^<]*)</td>!i";
    preg_match_all($regex, $html, $matches);
     
     
     
     
    print_r($matches[1]);
     
     
    ?>
    résultat :

    Array ( [0] => LM03695 [1] => LM96325 )


    Pour $matches[0]

    résultat :

    Array ( [0] =>
    n° de code
    LM03695 [1] =>
    n° de code
    LM96325 )


    Pour $matches

    résultat :

    Array ( [0] => Array ( [0] =>
    n° de code
    LM03695 [1] =>
    n° de code
    LM96325 ) [1] => Array ( [0] => LM03695 [1] => LM96325 ) )

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 76
    Points : 54
    Points
    54
    Par défaut
    En effet sabotage ta solution fonctionne. Merci beaucoup pour l'aide !!!

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 06/02/2013, 13h58
  2. Réponses: 10
    Dernier message: 16/05/2010, 00h41
  3. Réponses: 9
    Dernier message: 29/08/2008, 14h35
  4. Réponses: 13
    Dernier message: 26/06/2006, 12h10
  5. Récupérer puis nommez des valeurs from un base MySQL
    Par nono3000 dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 14/12/2005, 20h41

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