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 :

vérification de chaine depuis tableau


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 100
    Par défaut vérification de chaine depuis tableau
    bon jour à tous

    Je butte sur un pb qui me semble tout simple pourtant

    voici un code simple qui affiche "valeur trouvée" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $user  = 'name_156examplecra-rtzz';
    $cherche = 'cra';
    $domain = strstr($user, $cherche);
     
    if ($domain == TRUE) {
    	echo 'valeur trouvée' ;
    }
    else {echo 'inconnue' ;}
    maintenant je voudrais remplacer $cherche par un tableau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $cherche = array('cra', 'brot', 'mns')
    Je veux tester l'existence d'un des éléments du tableau dans $user
    Est-ce que j'utilise les bonnes fonctions ? car jusqu'à maintenant je ne parviens à rien

  2. #2
    Membre Expert
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Par défaut
    bonjour,

    je ferais une boucle tout simplement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    $user  = 'name_156examplecra-rtzz';
    $cherche = array('cra', 'brot', 'mns');
    $domain=false;
    foreach($cherche As $item) {
        if(strstr($user, $item)) $domain=true;
    }
    if ($domain == TRUE) {
    	echo 'valeur trouvée' ;
    }
    else {echo 'inconnue' ;}
    par exemple...

  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
    Par défaut
    Il va falloir que tu parcours ton tableau et que tu recherches chaque element dans ta chaine.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 100
    Par défaut
    Je pensais qu'il existait une fonction ad-hoc un peu style ci-dessous

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    in_array( strstr($user, $cherche), $cherche))
    Sinon bien sûr je parcours le tableau

    merci à vous
    pascal

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 100
    Par défaut utilisation de break
    bon soir à tous

    J'apprends chaque jour et je voudrais votre avis sur le code ci-dessous, est-il "académique" ?
    Tant qu'à faire, autant respecter les règles en usage, non ?

    Le but : dès qu'une des valeurs du tableau est repérée, il y a lancement du traitement

    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
     
    $client = "chaine de caractères à tester"
    $robot = array('ert','dfg','ser') ; // mots à chercher
    $result = FALSE ;
    foreach($robot As $item) {
        if(strstr($client, $item)) {
    	    $result = TRUE ;
    	    break ;
        }    
    }
    if ($result === TRUE) {
    		traitement si sous-chaîne trouvée
    }
    else {
    		traitement si sous-chaîne absente
    }
    merci d'avance et bonne soirée
    pascal

  6. #6
    Membre Expert
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Par défaut
    Oui, évidemment si tu peux sortir de ton itération dès que la condition est remplie c'est mieux, ça évite au cpu de se faire des tours de cou pour rien.


  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 100
    Par défaut
    je pensais qu'il était mieux de sortir "proprement" d'une boucle càd aller au bout des itérations et sortir "par le bas" et non par le milieu (=sortie forcée) ?

  8. #8
    Membre Expert
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Par défaut
    Citation Envoyé par grassel Voir le message
    je pensais qu'il était mieux de sortir "proprement" d'une boucle càd aller au bout des itérations et sortir "par le bas" et non par le milieu (=sortie forcée) ?
    je ne pense pas car l'expression "break" est équivalent de "last" en C, donc tu dis juste a ta boucle de passer au dernier enregistrement, tu ne casses pas la fonction...


  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 100
    Par défaut
    merci pour l'échange

    Encore des milliers de questions, mais il faut être raisonnable et en garder pour demain

  10. #10
    FoxLeRenard
    Invité(e)
    Par défaut
    Citation Envoyé par ska_root Voir le message
    je ne pense pas car l'expression "break" est équivalent de "last" en C, donc tu dis juste a ta boucle de passer au dernier enregistrement, tu ne casses pas la fonction...

    Non l'Ami break est le strict équivalent de son rôle en langage "C"

    L'instruction break permet de sortir d'une structure for, foreach, while, do-while ou switch.

    Il est bon de noter a ce sujet que break accepte une valeur numérique
    non obligatoire pour dire combien de logique imbriqué il arréte si le IF est valide.

    Donc en general on ne mets rien, mais si par exemple un while et un switch sont imbriqués

    si j'écris
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
        if ($ww == 'NO') {  break 1;     }
    il sort du switch mais le while continuera

    par contre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
        if ($ww == 'NO') {  break 2;     }
    sortira immédiatement des deux ...

  11. #11
    FoxLeRenard
    Invité(e)
    Par défaut
    Citation Envoyé par grassel Voir le message
    bon soir à tous
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    if ($result === TRUE) {
    traitement si sous-chaîne trouvée
    }
    merci d'avance et bonne soirée
    pascal
    Super et j'allais intervenir pour rappeler que si une occurence se trouve en tête (position 0 mais true) il fallait le triple "="
    et je vois que tu l'a bien fait

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 100
    Par défaut
    j'accepte la remarque... pour une fois à mon avantage

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

Discussions similaires

  1. recherche chaine dans tableau
    Par mathieu57 dans le forum Langage
    Réponses: 1
    Dernier message: 02/10/2007, 12h29
  2. [Tableaux] Récupérer variables depuis tableau
    Par bigzpanda dans le forum Langage
    Réponses: 4
    Dernier message: 29/07/2007, 20h38
  3. Réponses: 14
    Dernier message: 26/11/2006, 13h14
  4. [avec Matches ?]Vérification cohérence chaine
    Par nebule dans le forum Collection et Stream
    Réponses: 6
    Dernier message: 08/09/2006, 09h35
  5. [PL / SQL] Convertir chaine en tableau de char
    Par shaun_the_sheep dans le forum Oracle
    Réponses: 3
    Dernier message: 06/02/2006, 10h29

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