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 :

[eregi / split / preg_match_all] Récupérer dans un tableau différentes chaines répondant à un critère.


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 19
    Points : 9
    Points
    9
    Par défaut [eregi / split / preg_match_all] Récupérer dans un tableau différentes chaines répondant à un critère.
    Bonjour à tous !

    Je dois récupérer dans un fichier toutes les chaines qui répondent à un critère afin de les envoyer, individuellement, par mail ...

    En clair :
    Je veux récupérer les différentes infoX dans un fichier contenant :
    blabla infoA blabla infoB blabla infoC blabla

    Et envoyer de façon séparées dans 3 mails distincts les infoA, infoB et infoC.

    La fonction eregi() m'a permis de trouver toutes les occurrences de mes "infoX", mais il me les mets toutes à la suite dans un seule "cellule" de tableau.

    J'ai tâtonné avec la fonction split() mais j'ai pas l'impression que ce soit la bonne direction.

    Une petite piste éventuelle à me donner ?

    Merci d'avance !

    Je voudrais que mon infoA soit dans l'array[1], mon infoB dans mon array[2] et mon infoC dans mon array[3] ... Histoire, dans la foulée, de parcourir mon array pour envoyer les infos par mail via une boucle.

  2. #2
    Membre averti Avatar de beejeridou
    Homme Profil pro
    Webmaster
    Inscrit en
    Février 2007
    Messages
    280
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Février 2007
    Messages : 280
    Points : 342
    Points
    342
    Par défaut
    je chercherais vers la fonction preg_match_all();

    je crois qu'elle met dans un tableau les résultats trouvés par une expression régulière.
    Et pourtant... Elle tourne.
    http://www.djib.me

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 19
    Points : 9
    Points
    9
    Par défaut
    Voilà mon code initial qui me renvoie effectivement ce que je cherche mais "en bloc", je ne peux donc pas scinder les différentes occurrences :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $texte = eregi("<table bgcolor=\"#f1f1f3\" width=\"50%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">(.*)<td height=\"5px\" bgcolor=\"#b8b8b8\"></td></tr>",$page,$result);
     
    echo $result[1];
    Je cherche à utiliser la fonction preg_match_all() mais j'ai différents problèmes :

    Je n'arrive pas à utiliser l'argument " PREG_SET_ORDER " qui est censé définir le fait que chaque occurrence est à placer dans une "cellule" différentes du tableau ... je me retrouve avec le message d'erreur suivant :

    Warning: preg_match() [function.preg-match]: Invalid flags specified in blablabla on line 16
    Et ce, même si je copie bêtement un code pris sur le net pour tester ...

    Ce que je cherche à obtenir, c'est tous les différents "contenus" du tableau HTML précisé en paramètre (oui je sais, il manque la dernière balise de table, mais le cas est particulier) dans le fichier placé lui aussi en paramètre.

  4. #4
    Membre averti Avatar de beejeridou
    Homme Profil pro
    Webmaster
    Inscrit en
    Février 2007
    Messages
    280
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Février 2007
    Messages : 280
    Points : 342
    Points
    342
    Par défaut
    On pourrait faire plusieurs eregi à la suite pour chaque chose que tu cherches... ???

    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
     
    $string = 'XYZ';
    $cequejecherche = 'z';
    $cequejecherche2 = 'x';
     
    $tab = array();
    if (eregi($cequejecherche , $string)) {
        $tab[] = $cequejecherche;
    }
     
    if (eregi($cequejecherche2 , $string)) {
        $tab[] = $cequejecherche2;
    }
     
    foreach($tab as $value) {
        echo $value."<br />";
    }
    Et pourtant... Elle tourne.
    http://www.djib.me

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 19
    Points : 9
    Points
    9
    Par défaut
    J'y avais pensé et je vais tester ça dessuite ... mais dans la mesure où dès la première exécution du eregi, il me colle toutes les occurrences d'un coup, d'un bloc dans la première section de l'array ... si je le fais 2x, j'ai peur qu'il me colle toutes les occurrences en bloc dans toutes les sections de l'array ...


    J'essaie dessuite tout de même... j'étais justement en train de me tâter à le faire.

    ----------

    Aïe non ... ma condition de recherche étant identique pour toutes les occurrences (puisque je cherche justement toutes les occurrences répondant à ce critère unique) ...

    Il me trouve la même chose dans toutes les sections de l'array.

    ----------

    La fonction que tu m'as indiquée à l'air bien mais je n'arrive pas à m'en servir ... entre les expressions régulières qui ne sont pas prises en compte (il ne veut pas de mon (.*) et l'argument censé être "standard" qui m'est refusé ... je galère à l'utiliser.

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 19
    Points : 9
    Points
    9
    Par défaut
    Je double-poste mais c'est pour marquer l'avancement ...

    J'avais, en fait, un problème avec Wamp qui ne voulait pas de l'attribut PREG_SET_ORDER.

    Me souvenant qu'une fois j'avais eu un problème avec Easy PHP et pas avec Wamp, j'ai tenté l'inverse et ma fonction marque impeccablement bien sous Easy-PHP.

    J'ai donc un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_match_all($motif, $page, $out, PREG_SET_ORDER);
    qui marche parfaitement bien et me place chaque occurrences différentes dans une section propre de l'array.

    Merci beaucoup beejeridou de m'avoir aiguillé vers cette fonction que je ne connaissais pas encore.

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 31/03/2011, 13h48
  2. Rechercher indice dans un tableau de chaine de caractère
    Par bsangoku dans le forum Débuter
    Réponses: 4
    Dernier message: 23/12/2009, 11h50
  3. récupérer dans un tableau IP[4] l adresse IP
    Par karistouf dans le forum Débuter
    Réponses: 6
    Dernier message: 12/09/2008, 18h56
  4. Réponses: 6
    Dernier message: 09/06/2008, 16h35
  5. Réponses: 4
    Dernier message: 03/05/2006, 14h30

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