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 :

Détécter certains mots dans une phrase [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre éprouvé
    Avatar de amoiraud
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 606
    Points : 1 057
    Points
    1 057
    Par défaut Détécter certains mots dans une phrase
    Bonjour,
    Voila en fait j'essaye de faire un script qui détecte certains mots dans une phrase et qui renvoie une réponse en fonction de la question.
    J'ai donc commencer par tester avec la phrase "T'est sur ?";
    Voici le code :

    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
    23
    24
     
    $regSur = "/[t'est|tu est|tu en est|t'es|tai|t'ai|test](.+)[sur|sure|sûr|sûre]/isU";
    $idRepSur = rand(1,3);
    switch ($idRepSur) {
    	case 1:
    		$repSur = "Oui j'en suis sûr.";
    	break;
    	case 2:
    		$repSur = "A moitié sûr.";
    	break;
    	case 3:
    		$repSur = "Non j'en suis pas sûr.";
    	break;
    }
    $tab_reponsesSimples[$regSur] = $repSur;
     
    $reponse = '?';
    foreach($tab_reponsesSimples as $key => $val){
    	if(preg_match($key, $phrase)){
    		$reponse = $val;
    	}
    }
     
    return $reponse;
    Si il ne trouve pas les mots clés, il est censés renvoyer '?'.
    Le problème c'est quand tapant n'importe quoi comme par exemple "cegref fkoolfk", il me réponds une des 3 réponses comme si j'avais tapé "T'est sur".

    Quelqu'un à une idée du problème ou une meilleure solution ?
    Merci.


    Les boutons et existent, servez-vous en

  2. #2
    Expert confirmé
    Avatar de N1bus
    Homme Profil pro
    Dev. Web & OpenERP
    Inscrit en
    Janvier 2003
    Messages
    2 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Dev. Web & OpenERP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 827
    Points : 5 673
    Points
    5 673
    Par défaut
    Bonjour,

    Ta regex ne sert a rien puisque tu mets :
    et qu'après tu fais un switch ($idRepSur) .

    Donc tu auras à chaque fois un case qui fonctionnera.

  3. #3
    Membre actif Avatar de fab76000
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    311
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 311
    Points : 294
    Points
    294
    Par défaut
    ça doit venir de ton expression réguliere, elle doit pas correspondre à tes besoins, essaye de la tester seule.

  4. #4
    Membre éprouvé
    Avatar de amoiraud
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 606
    Points : 1 057
    Points
    1 057
    Par défaut
    Citation Envoyé par N1bus Voir le message
    Bonjour,

    Ta regex ne sert a rien puisque tu mets :
    et qu'après tu fais un switch ($idRepSur) .

    Donc tu auras à chaque fois un case qui fonctionnera.
    Non ca ne vient pas de la car après je met $repSur dans un tableau ainsi que la regex, puis je fais un if(preg_match($key, $phrase)), si le preg_match échoue il garde la valeur '?' dans $reponse, sinon il met une des 3 réponses.

    fab76000 : Oui ca viens de ma regex, j'ai jamais été doué pour les expressions régulières, c'est pour ca qu'il me faudra un exemple dont je pourrais me servir pour les autres phrase.

    Je comprend vraiment pas, normallement vu que je lui ai mis une liste de mot il devrait pas me trouver un résultat quand je met 2 mots complètement différents !?
    Quelqu'un peut m'aider ?


    Les boutons et existent, servez-vous en

  5. #5
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 868
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 868
    Points : 16 258
    Points
    16 258
    Par défaut
    En même temps, tu confonds les crochets et les parenthèses dans ton expression ...

  6. #6
    Membre éprouvé
    Avatar de amoiraud
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 606
    Points : 1 057
    Points
    1 057
    Par défaut
    Citation Envoyé par Bisûnûrs Voir le message
    En même temps, tu confonds les crochets et les parenthèses dans ton expression ...
    Oui en fait je m'en suis rendu compte ce matin
    Merci


    Les boutons et existent, servez-vous en

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

Discussions similaires

  1. [RegEx] supprimer des mots dans une phrase
    Par anarchoi dans le forum Langage
    Réponses: 6
    Dernier message: 10/05/2007, 09h44
  2. Nombre d'occurences d'un mot dans une phrase
    Par cirtey dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 07/05/2007, 21h01
  3. requête pour trouver un mot dans une phrase
    Par FRIGAUX dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 25/11/2006, 22h18
  4. recherche par mots dans une phrase ou titre
    Par pierrot67 dans le forum Bases de données
    Réponses: 3
    Dernier message: 11/09/2006, 09h29
  5. Recherche d'un mot dans une phrase se touvant dans un champ
    Par Grandbastien dans le forum Access
    Réponses: 3
    Dernier message: 02/04/2006, 09h58

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