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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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é)...

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