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 :

[Tableaux] Faire un test conditionnel sur valeur tableau


Sujet :

Langage PHP

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

    Informations forums :
    Inscription : Mai 2007
    Messages : 146
    Points : 52
    Points
    52
    Par défaut [Tableaux] Faire un test conditionnel sur valeur tableau
    B'jour!

    J'ai repris un code existant pour pouvoir apprendre à utiliser le preg_match_all() mais voilà, je suis bloqué juste après son utilisation...

    En fait je veux que SI mon caractère est trouvé, alors il me renvoie "existe", sinon il me renvoie "existe pas".

    Je me suis dit que le plus simple est de laisser le code tel quel puisqu'il compte le nombre d'occurences trouvées. Ainsi mon code est le suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $file = file_get_contents('http://www.perdu.com/');
    preg_match_all("#panique#",$file,$matches);
    $nombre_des_resultats=count($matches[0]);
     
    if (nombre_des_resultats != 0)
    {
    echo "existe!";
    }
     
    	else {
    echo "existe pas";
    	}
    Cependant, mon test ne fonctionne pas, parce que $nombre_des_resultats n'est pas égal à 1 mais il est égal à int(1) , ce qui apparement est différent. A noter, si deux occurences étaient trouvées, la valeur de la variable serait de int(2).

    Je ne vois donc pas comment effectuer mon test. J'ai essayé de chercher rapidement s'il fallait faire un "cast" de la valeur mais j'ai abandonné en me disant qu'il y a sans doute plus simple.

    Merci de m'avoir lu et merci de votre aide

    David

  2. #2
    Membre confirmé

    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2006
    Messages : 317
    Points : 597
    Points
    597
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $file = file_get_contents('http://www.perdu.com/');
    preg_match_all("#panique#",$file,$matches);
     
     
    if (array_key_exists(0,$matches) !== false)
    {
    echo "existe!";
    }
    else {
    echo "existe pas";
    }
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $file = file_get_contents('http://www.perdu.com/');
    preg_match_all("#panique#",$file,$matches);
     
     
    if (count($matches) >= 1)
    {
    echo "existe!";
    }
    else {
    echo "existe pas";
    }

  3. #3
    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 : 50
    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,
    Ta variable doit être préfixée par $ ($nombre_des_resultats)
    Si tu ne le fais pas, php essaie de l'interpréter comme une chaîne et ça fout ton test en l'air.
    • 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

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 146
    Points : 52
    Points
    52
    Par défaut
    Merci pour vos réponses!

    Impressionnant Phelim, tu réponds à toutes mes questions depuis deux jours

    Merci

    Edit:

    Heuuu... ça ne marche pas? si je recherche "nnnnnnn" il me dit que ça existe.
    Je ne comprends vraiment plus rien. Ca retourne bien une valeur supérieure ou égale à 1 quand une ou plusieurs occurences ont été trouvées (??!!) donc pourquoi il me dit que ça existe toujours?? Je cherche, je cherche...

  5. #5
    Membre confirmé

    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2006
    Messages : 317
    Points : 597
    Points
    597
    Par défaut
    Impressionnant Phelim, tu réponds à toutes mes questions depuis deux jours
    En ce moment, j'ai pas grand chose à faire et ça me fait reviser certains concepts. justement, ça faisait un petit moment que j'avais pas utilisé les expressions regulieres

    en faite mon code doit etre changé, par dans tous les cas, le matches est un tableau contenant n elements vides (dependant du nombre de sous pattern)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $file = file_get_contents('http://www.perdu.com/');
    preg_match_all("#panique#",$file,$matches);
     
     
    if (count($matches[0]) >=1)
    {
    echo "existe!";
    }
    else {
    echo "existe pas";
    }
    En faite preg_match_all cree un tableau par sous pattern et un tableau pour le pattern complet.
    C'est a dire pour un pattern de ce type : #(pan)i(que)#, pour panique, il renvoie sur le tableau 0, pour par, il renvoie sur le tableau 1 et pour que, il renvoie sur le tableau 2.

    Apres, il faut en faite regarder le nombre d'element de chaque tableau

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 146
    Points : 52
    Points
    52
    Par défaut
    raaaa c'est cool Merci

    l'explication est méga compliquée pour moi, je vais devoir voir ce qu'est précisément un pattern, etc...

    Bon ben merci encore

    David

  7. #7
    Membre confirmé

    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2006
    Messages : 317
    Points : 597
    Points
    597
    Par défaut
    Pattern signifie seulement shéma (a garder en permanence a l'esprit).

    Dans ce cas, preg_match utilise un filtre texte. Ce filtre est appellé expression reguliere (ou regexp couramment). Tu utilises la version la plus simple, trouver un mot. Il est possible de décrire tres precisément les mots que tu recherches (genre que je veux que les mots de 5 lettres commencant par b).
    On décrit un shéma que le moteur d'expression reguliere interpretera et recherchera. Dans ton cas, le shéma est #panique#

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 146
    Points : 52
    Points
    52
    Par défaut
    Ha ok merci beaucoup pour cette explication, c'est plus clair

    Je me suis renseigné sur les cours PHP et aussi la FAQ PHP pour les différentes méthodes pour rechercher des chaines de caractères ou des nombres.

    Je vais pouvoir avancer dans ma p'tite appli

    Bonne soirée!

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

Discussions similaires

  1. [XL-2003] Test à effectuer sur valeurs numériques (débutant VBA..)
    Par Clipper24 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 22/07/2010, 12h25
  2. [Selenium] Faire des tests avec des valeurs dynamiques (sans refaire le même scénario)
    Par geforce dans le forum Tests et Performance
    Réponses: 2
    Dernier message: 23/05/2010, 02h07
  3. Réponses: 2
    Dernier message: 21/10/2008, 20h59
  4. Comment faire un Drag&Drop sur un tableau
    Par Stef.web dans le forum Composants VCL
    Réponses: 6
    Dernier message: 11/10/2003, 13h12

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