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 :

Simplifier code avec strpos


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Avatar de Freedolphin
    Homme Profil pro
    Webmaster
    Inscrit en
    Février 2006
    Messages
    291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2006
    Messages : 291
    Par défaut Simplifier code avec strpos
    Bonjour,

    J'ai une ligne de code qui vérifie la présence de mots (interdits) dans un champ (en l'occurrence un textarea) en utilisant la fonction strpos :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(strpos($champ, 'casino') !== false || strpos($champ, 'poker') !== false || strpos($champ, 'viagra') !== false || strpos($champ, 'porno') !== false || strpos($champ, 'sexy') !== false || strpos($champ, 'érotique') !== false)
    Y'a-t-il un moyen de simplifier pour éviter une ligne trop longue, sachant que cette ligne est elle-même dans une fonction ?

    Merci de vos pistes.

  2. #2
    Membre émérite
    Profil pro
    Assistant recherche bioinformatique
    Inscrit en
    Novembre 2007
    Messages
    877
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant recherche bioinformatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 877
    Par défaut
    Salut,

    Une solution serait d'utiliser preg_match:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_match(/(casino)|(poker)|viagra)|(porno)|(sexy)/, $champ,);
    Signification :
    pregmatch retourne le nombre de fois que le motif est retrouvé. 0 signifie donc que aucune aucurence n'a été trouvée.
    Chaque mot du motif est entre parenthèses, et le ou est symbolisé par |

    Z.

  3. #3
    Membre éclairé
    Avatar de Freedolphin
    Homme Profil pro
    Webmaster
    Inscrit en
    Février 2006
    Messages
    291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2006
    Messages : 291
    Par défaut
    En effet, très bonne piste.
    J'ai donc écrit la ligne suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (preg_match($motinterdit, $champ))
    en rassemblant les mots dans une variable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $motinterdit = "/\b(poker)|(casino)\b/i";
    le b sélectionnant le mot entier et le i rendant insensible à la casse.

    Merci Zwiter.

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

Discussions similaires

  1. Simplifier code avec offset
    Par stmastma dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 16/02/2010, 09h11
  2. [XL-2003] Simplifier code avec condition
    Par AMO05 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 20/05/2009, 12h27
  3. Comment linker avec odbc32.lib dans le code ? (avec gcc)
    Par _Audrey_ dans le forum Autres éditeurs
    Réponses: 3
    Dernier message: 06/11/2008, 17h40
  4. [UML] génération de code avec omondo.uml
    Par RENAULT dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 31/10/2003, 13h14
  5. [sous-chaine] Avec strpos ou substring ??
    Par terziann dans le forum SQL Procédural
    Réponses: 5
    Dernier message: 17/07/2003, 15h28

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