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 :

regex et chiffre latin [RegEx]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Consultant communication & réseaux
    Inscrit en
    Juillet 2012
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant communication & réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2012
    Messages : 43
    Par défaut regex et chiffre latin
    Bonjour à tous,

    Je termine actuellement mon site qui a pour thème l'histoire. J'ai créé un moteur de recherche dessus qui tourne très bien mais sur lequel j'ai un problème. Lorsque je tape des mots de plus de 4 lettres ma recherche est impeccable et rapide par contre j'ai un problème sur mes recherches concernant les rois de France. On les exprime toujours de la façon suivante : Charles X ou Henry IV etc....
    Et la forcement il ne prend pas en compte le X ou le IV et donc mon résultat devient nul.
    A force de chercher je m'oriente peu à peu sur les regex dont je viens de finir de lire le tuto sur le site. Mon problème est comme je suis totalement nul sur ce sujet je suis perdu.
    Je n'ai rien trouvé (il me semble) qui me permettrait de dire si par exemple il existe "charles X" conserver la totalité de la chaine de caractère dans ma recherche lors de ma requête SQL.

    Pour être plus clair voici un exemple :

    charles I = mauvais résultat
    charles II = mauvais résultat
    charles III = mauvais résultat
    charles IV = mauvais résultat
    charles V = mauvais résultat
    charles VI = mauvais résultat
    charles VII = mauvais résultat
    charles VIII = BON RESULTAT (4 caractères)
    charles IX = mauvais résultat
    charles X = mauvais résultat


    Si quelqu'un pouvait me donner quelques conseils cela me serait très utile.

    Merci beaucoup d'avance.

    Astroma

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2009
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2009
    Messages : 116
    Par défaut
    En principe, si tu fais une requete dans ta base de données pour rechercher les rois de France.

    Je pense que si tu fais cette requete, ça devrait fonctionner, peu importe, si il y a 1 ou plusieurs chiffres.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT nom_roi FROM rois WHERE nom_roi LIKE "%VI%;

  3. #3
    Membre averti
    Homme Profil pro
    Consultant communication & réseaux
    Inscrit en
    Juillet 2012
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant communication & réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2012
    Messages : 43
    Par défaut
    effectivement mais ma requete est un peu plus compliqué et elle fait exactement ce que je veux grace à l'utilisation de match et against. Mais c'est la réponse pour laquelle les chaine de 3 caractères et moins ne sont pas prisent en compte. La voici pour info.
    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
    <?php
    $resultats=$connexion->prepare("
    SELECT
    h_ev, h_id, h_dt1, h_dt2, h_lieu, h_src, h_srl,h_lat, h_long,
    v_nom, v_py,
    o_ad, o_tel, o_ml, o_fx, o_sit,
    m_nom, m_ad, m_dcrpt, m_aut, m_per,
    mu_nom, mu_ad, mu_st, mu_tel,
    t_ev, t_ad, t_dcrpt, t_cr, t_pe, t_o, t_oad, t_otl, t_ofx, t_m, t_mad, t_mo, t_mf, t_s, t_p1, t_p2, t_p3,
    (MATCH (h_ev) AGAINST ('$chercher') + MATCH (h_lieu) AGAINST ('$chercher')) as score
    FROM historique
    INNER JOIN ville on historique.h_ins = ville.v_ins
    LEFT JOIN office on historique.h_ins = office.o_ins
    LEFT JOIN mh on historique.h_lieu = mh.m_nom 
    LEFT JOIN musee on historique.h_ins = musee.mu_ins
    JOIN textes
    WHERE 
    MATCH (h_ev) AGAINST ('$chercher') OR MATCH (h_lieu) AGAINST ('$chercher')
    ORDER BY score DESC
    LIMIT 0,100
    ");
    $resultats->execute();
    ?>
    Astroma

  4. #4
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2009
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2009
    Messages : 116
    Par défaut
    Donc si je comprend bien le résultat de ta requete te retournent bien ceux que tu recherches.

  5. #5
    Membre averti
    Homme Profil pro
    Consultant communication & réseaux
    Inscrit en
    Juillet 2012
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant communication & réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2012
    Messages : 43
    Par défaut Sauf dans le cas des chiffres latin
    Sauf pour les rois de France avec les chiffres latin.

    Car la requete avec match against bien que plein d'avantage m'éjecte les chaine de moins de 4 caractères. Ce qui me pose problème juste dans le cas des noms avec chiffre latin.

    Je voudrais donc forcer la requete a prendre "charles X" comme une chaine unique si c'est possible.

    Merci d'avoir répondu.

    Astroma

  6. #6
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2009
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2009
    Messages : 116
    Par défaut
    Et si tu changes ta requete comme celle ci, ça sera pas mieux?

    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
    <?php
    $resultats=$connexion->prepare("
    SELECT
    h_ev, h_id, h_dt1, h_dt2, h_lieu, h_src, h_srl,h_lat, h_long,
    v_nom, v_py,
    o_ad, o_tel, o_ml, o_fx, o_sit,
    m_nom, m_ad, m_dcrpt, m_aut, m_per,
    mu_nom, mu_ad, mu_st, mu_tel,
    t_ev, t_ad, t_dcrpt, t_cr, t_pe, t_o, t_oad, t_otl, t_ofx, t_m, t_mad, t_mo, t_mf, t_s, t_p1, t_p2, t_p3,
    (MATCH (h_ev) AGAINST ('$chercher') + MATCH (h_lieu) AGAINST ('$chercher')) as score
    FROM historique
    INNER JOIN ville on historique.h_ins = ville.v_ins
    LEFT JOIN office on historique.h_ins = office.o_ins
    LEFT JOIN mh on historique.h_lieu = mh.m_nom 
    LEFT JOIN musee on historique.h_ins = musee.mu_ins
    JOIN textes
    WHERE 
    h_ev LIKE "%'$chercher'%"
    ORDER BY score DESC
    LIMIT 0,100
    ");
    $resultats->execute();
    ?>

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

Discussions similaires

  1. [RegEx] Regex pour chiffres uniquement
    Par EIN-LESER dans le forum Langage
    Réponses: 11
    Dernier message: 01/12/2014, 11h29
  2. [RegEx] Regex 3 chiffres
    Par je-suis-moi dans le forum Langage
    Réponses: 6
    Dernier message: 18/01/2009, 06h33
  3. [RegEx] Regex pour récupérer une chaîne de 6 chiffres
    Par calitom dans le forum Langage
    Réponses: 5
    Dernier message: 12/06/2008, 21h37
  4. [RegEx] Regex trouvé des chiffres entre parenthèse
    Par narayana_seb dans le forum Langage
    Réponses: 2
    Dernier message: 15/11/2007, 19h51
  5. regex pour comparer des dates, des chiffres, des nombres
    Par lex13 dans le forum Collection et Stream
    Réponses: 14
    Dernier message: 06/07/2007, 11h51

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