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 syntax Smarty


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    65
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 65
    Par défaut Regex et syntax Smarty
    Bonjour,

    Et oui encore c'est petits monstres de regex!

    bon plus sérieusement je suis en train de devenir fou à cause de ce bout de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_replace_callback('#\{\$(.*)\}#Usi',array(&$this,'tableau_valeur'),$contenu_etat);
    En effet ce regex va bien détecter la chaine texteàprendre depuis {$texteàprendre}

    Mais dès lors que l'on rajoute {$texteàprendre|upper}

    là c'est le drame car il va prendre => texteàprendre|upper

    Mon problème est le suivant: arriver à faire comprendre au regex de s'arrêter avant le | (notons que ce séparateur est optionnel)

    Merci d'avance

  2. #2
    Membre Expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Par défaut
    Bonjour,

    Si ton caractère d'arrêt est le #, le pattern sera le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $pattern = '#\{\$([^#]*)\}#Usi'
    Je ne peux m'avancer avec le pipe, parce que c'est un cas particulier à tester.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    65
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 65
    Par défaut
    arf ce regex me retourne une erreur:

    Warning: preg_replace_callback() [function.preg-replace-callback]: Unknown modifier ']' in C:\wamp\www\charlon\libs\classes\cl.etat.php on line 122

    des idées parce que moi j'abandonne...

  4. #4
    Membre Expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Par défaut
    Citation Envoyé par cbalmefrezol Voir le message
    arf ce regex me retourne une erreur:

    Warning: preg_replace_callback() [function.preg-replace-callback]: Unknown modifier ']' in C:\wamp\www\charlon\libs\classes\cl.etat.php on line 122

    des idées parce que moi j'abandonne...
    Hey, c'est quand même pas la plus dure à résoudre...

    Je me suis planté sur les délimitteurs (des #) qui sont identiques au caractère utilisé pour faire séparateur. Et moi qui frimait en te disant de faire attention aux cas particuliers, je vais me jeter d'un pont !

    Allez, j'essaie de me racheter :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $pattern = '!\{\$([^#]*)\}!Usi';

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    65
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 65
    Par défaut
    en faite je pense qu'il faut revoir la logique au lieu de tester {$....}

    il faut tester $[une suite alpha-num uniquement]

    j'ai fais le pattern :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $pattern = '!\$([^0-9a-zA-Z]*)!Usi';
    mais sans succès.

    le problème que je rencontre est le suivant:

    pour $mavarible => il va seulement prendre $ alors qu'il devrait prendre mavarible

    Une idée?

    Merci d'avance

  6. #6
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par défaut
    Bonjour,

    avec le caractère ^, tu indiques que la suite de caractères NE doit PAS comprendre un caractère alphanumérique.

    Pour ce qui est des modificateurs, avec ton dernier exemple, utiliser U (non gourmand) est inutile, de même que i (insensible à la casse) et s (puisque le . n'est pas utilisé)...

  7. #7
    Membre Expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Par défaut
    Citation Envoyé par Eusebe Voir le message
    (...)
    Pour ce qui est des modificateurs, avec ton dernier exemple, utiliser U (non gourmand) est inutile(...)
    Je dirais même plus, c'est de là que provient l'erreur !

    Toujours se demander comment va se comporter le quantificateur * : lorsqu'il est ungreedy, tu lui dit tout simplement que ne rien trouver convient parfaitement si cela ne contredit pas le reste de la regex, ce qui est exactement ton cas...

Discussions similaires

  1. [Smarty] erreur syntax smarty
    Par medalaoui dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 25/07/2013, 07h33
  2. Regex sur syntaxe mot de passe
    Par raks13 dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 29/03/2011, 18h17
  3. Regular Expression (Regex) syntax avec C#.NET
    Par paca_mike dans le forum C#
    Réponses: 4
    Dernier message: 24/03/2009, 21h54
  4. [Smarty] Smarty et regex
    Par Janitrix dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 11/11/2007, 22h29
  5. [RegEx] Syntaxe
    Par Admin dans le forum Langage
    Réponses: 3
    Dernier message: 01/01/2006, 16h53

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