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 :

Usage de preg_match


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Inscrit en
    Août 2010
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 6
    Par défaut Usage de preg_match
    Bonjour,
    Pour un correcteur syntaxique j'ai besoin de savoir si une chaîne correspond bien à :
    0 ou plus caractères parmi ( et espace, suivi de 1 ou plus caractères a-z, 0-9 et underscore, suivi de 0 ou plus caractères parmi ) et espace.
    D'instinct je me suis dit que preg_match était une bonne piste avec quelque chose dans le genre :
    ([( ]*) ([a-z0-9_]+) ([) ]*)
    Mais de fait preg_match permet de déterminer si tout ou partie de la chaîne testée correspond au filtre, alors que moi que la chaîne dans son intégralité corresponde au filtre.
    Par exemple la chaîne "abc)poi" correspond puisque une partie de la chaîne, par exemple "a" correspond.

    1. Existe t-il une fonction PHP qui permet de tester qu'une chaîne dans son intégralité corresponde à un filtre (et non pas des morceaux) ?

    2. Faut-il prendre le problème dans l'autre sens et chercher à mettre au point un masque qui va proposer les erreurs et tester sur ce masque ? Par exemple en cherchant un caractère autre que ceux-ci, puis en cherchant une parenthèse ouverte après un premier caractère, puis etc. peut être ce genre de chose :
    [^)( a-z0-9_] | ([a-z0-9_]+)([ )]*)\( | \)([ (]*)([a-z0-9_]+)

    3. Vaut-il mieux analyser caractère après caractère ?

    Globalement, face à ce genre de cas de figure, quelle est la meilleur piste ?

    Merci,

    Yokho

  2. #2
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Salut,

    avec les Regex il est tout à fait possible de tester toute la chaine dans son intégralité en débutant ton pattern par ^ et en le terminant par $

    Après le choix du match ou du non match dépend d'un peu de ton bon vouloir.
    Il n'y a pas de règle généralisable. Prend le regex le plus simple à écrire et à lire.

Discussions similaires

  1. Quel usage faites vous de Python (2004 - 2008) ?
    Par Guigui_ dans le forum Général Python
    Réponses: 130
    Dernier message: 03/12/2008, 23h59
  2. [POI] Usage à partir d'une Servlet
    Par fredmorvant29 dans le forum Servlets/JSP
    Réponses: 8
    Dernier message: 19/07/2004, 15h35

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