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 :

Un tri avec des conditions [PHP 7]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    HobbyWeb
    Inscrit en
    Janvier 2005
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : Suisse

    Informations professionnelles :
    Activité : HobbyWeb

    Informations forums :
    Inscription : Janvier 2005
    Messages : 183
    Par défaut Un tri avec des conditions
    Bonjour,

    J'ai un problème pour effectuer un tri

    J'ai un moteur de recherche en fulltex et je demande qu'un terme recherché fasse au moins 4 caractères, en dessous, un message d'erreur s'affiche. Jusqu'ici tout va bien.
    Cependant, j'ai constaté que si le terme fait 3 caractères mais que un de ces opérateurs y est ajoutés (MySQL FULLTEXT IN BOOLEAN MODE) + - () <> ~ ma règle ne fonctionne plus

    Exemple => pomm* fait 4 caractères + 1 pour l'opérateur et va afficher des termes comme pomme, pommier, pommard etc... => TOUT EST OK

    Maintenant si je mets pom* il devrait me mettre que le terme fait moins de 4 caractères mais dans l'absolue c'est pas le cas , l'opérateur est pris en compte donc aucun message d'erreur et aucun résultat de ma recherche.

    Comment trier le terme recherché et enlever 1 si un opérateur est présent sur un terme de 3 caractères ?

    A ce jour, j'ai ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     <?php elseif (mb_strlen($keywords)<=3) ?>
    Merci pour votre aide
    Yule

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
    $string = 'pom*';
     
    $pattern = '/^[A-Za-z]{4,}[\*\+\-\(\)\<\>\~]?$/';
    if( !preg_match($pattern, $string) )
    {
    	echo 'PAS ok';
    } else {
    	echo 'OK';
    }
    ?>
    • [A-Za-z]{4,} : 4 caractères alpha. ou plus
    • [\*\+\-\(\)\<\>\~]? :éventuellement un caractère : * + - ( ) < > ~

  3. #3
    Membre éclairé
    Homme Profil pro
    HobbyWeb
    Inscrit en
    Janvier 2005
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : Suisse

    Informations professionnelles :
    Activité : HobbyWeb

    Informations forums :
    Inscription : Janvier 2005
    Messages : 183
    Par défaut
    BOnjour,

    Parfait et merci bien pour cette réponse !

    Cordialement

    Yule

  4. #4
    Membre éclairé
    Homme Profil pro
    HobbyWeb
    Inscrit en
    Janvier 2005
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : Suisse

    Informations professionnelles :
    Activité : HobbyWeb

    Informations forums :
    Inscription : Janvier 2005
    Messages : 183
    Par défaut
    Re,

    Je viens de constater un problème avec l'espace vide sur un terme recherché. Avec ce regex, l'espace vide est true donc et si ma recherche à un mot composé comme suit : Club piscine

    Il va m'indiquer pas ok car l'espace vide est pris en compte (j'ai essayé de rajouter \s en vain)

    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
     
    <?php
    $string = 'pom*';
     
    $pattern = '/^[A-Za-z]{4,}[\*\+\-\(\)\<\>\~]?$/';
    if( !preg_match($pattern, $string) )
    {
    	echo 'PAS ok';
    } else {
    	echo 'OK';
    }
    ?>
     
    Cordialement
    Yule

    Ne pourrait-on pas dire finalement si le 4ème caractère = * ou + ou - ou ( ou ) ou < ou > ou ~ etc... = pas OK ?

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    c'est à TOI de définir clairement ce qui est autorisé ou pas :
    • uniquement des lettres ?
    • avec / sans accents ?
    • avec / sans espaces ?
    • Combien de caractères mini ?
    • caractères spéciaux ?
    • ... ?


    N.B. On pourrait ne pas prendre en compte les espaces.
    Mais si on tape :
    • "le du une" -> On a plus de 4 caractères (OK), mais 3 mots de moins de 4 caractères (PAS ok) !

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

Discussions similaires

  1. Paginate avec des conditions sur les clés etrangères.
    Par CeDRiC08 dans le forum Ruby on Rails
    Réponses: 3
    Dernier message: 03/07/2007, 09h49
  2. Réponses: 3
    Dernier message: 08/05/2007, 17h32
  3. Makefile avec des conditions
    Par meufeu dans le forum Linux
    Réponses: 2
    Dernier message: 04/08/2006, 11h46
  4. Réponses: 1
    Dernier message: 30/06/2006, 16h01
  5. [ASE][T-SQL] Appel d'une sous-proc avec des conditions
    Par metheorn dans le forum Sybase
    Réponses: 1
    Dernier message: 19/05/2006, 18h38

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