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 :

expression qui valide phrase ayant une syntaxe précise


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Chercheur Indépendant en IA
    Inscrit en
    Août 2004
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Chercheur Indépendant en IA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 10
    Par défaut expression qui valide phrase ayant une syntaxe précise
    Bonjour.

    Je vous prie de m'aider à écrire une expression régulière.

    Je veux écrire une expression régulière qui me permettra de reconnaitre une séquence de mots correspondant à une syntaxe.
    Voici la syntaxe qui doit servir de modèle (pattern)

    X = Y . où X et Y sont des variables à substituer et le caractère = doit toujours être présent.

    En fait , je veux identifier tous les mots ayant 1 ou plusieurs mots, suivi du signe "=", lequel est suivi d'1 ou plusieurs mots.

    Ainsi la séquence "tomber=chuter" , est reconnu par par mon modèle
    "de naissance = inné" , est aussi reconnu par mon modèle.

    Par contre "je vous écris" n'est pas reconnu, car il n 'y a pas le caractère =
    De même "je suis =" ne sera pas reconnu.

    Quel doit être l'expression régulière qui me permettra de reconnaitre une séquence de mots correspondants à ma syntaxe ?

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 418
    Par défaut
    L’ennui avec ^.+=.+$ c’est qu’elle donnera son feu vert même pour une chaîne contenant plus d’un signe =
    ce qui n’est peut être pas valide.





    Il n’y a pas besoin des expressions régulières.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if substr_count(chaine, ’=’) == 1
    suffit

  4. #4
    Membre Expert
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $str='De naissance=Inné';
    if(@preg_match('/^([^=]+)=([^=]+)$/',$str,$reg)){
    	print_r($reg);
    }
    donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Array
    (
        [0] => De naissance=Inné
        [1] => De naissance
        [2] => Inné
    )
    Mais c'est vrai qu'il n'y a pas véritablement besoin des expressions rationelles.

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Il n’y a pas besoin des expressions régulières.
    Un = tout seul valide ton test, il faudrait donc ajouter d'autres tests, donc autant utiliser une expression régulière.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 418
    Par défaut
    Un = tout seul valide ton test
    Bonne objection, Votre Honneur.

    il faudrait donc ajouter d'autres tests
    Pourquoi « d’autreS testS » ?
    Un seul suffit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if substr_count(chaine, ’=’) == 1 and strlen(chaine) > 2:
    Mais c’est comme pour la demande d’une expression régulière : il faut savoir remettre en question les demandes.
    Donc je conteste le « ajouter d’autres » et je propose:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if substr_count(chaine[1:-1], ’=’) == 1:
    Nota: la notation [1:-1] enlève les premier et dernier caractères , en Python. Ce n’est peut être pas ça en PHP. Je ne me rappelle plus, mais voilà l’idée.

Discussions similaires

  1. [2.x] Formulaire qui change lors d'une action précise
    Par Vrugar dans le forum Symfony
    Réponses: 0
    Dernier message: 26/11/2012, 14h32
  2. [RegEx] Expression qui ne contient pas une chaine
    Par coupolites dans le forum Langage
    Réponses: 5
    Dernier message: 02/03/2010, 10h07
  3. Rechercher un fichier ayant une donnée précise
    Par liop49 dans le forum Macros et VBA Excel
    Réponses: 22
    Dernier message: 13/05/2009, 08h13
  4. Réponses: 2
    Dernier message: 09/10/2006, 19h33

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