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

Bibliothèques et frameworks PHP Discussion :

[Smarty] Smarty et regex


Sujet :

Bibliothèques et frameworks PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Avatar de Janitrix
    Inscrit en
    Octobre 2005
    Messages
    3 391
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 3 391
    Par défaut [Smarty] Smarty et regex
    Bonjour,

    J'utilise Smarty depuis quelques temps, et j'aimerai maintenant parser un texte pour réaliser une sorte de bbcode.

    Cependant, j'ai quelques problèmes. En effet, mes balises de mise en forme sont de type '<bold>texte en gras</bold>', et l'utilisation des '< >' ne semble pas convenir à Smarty. Voici mon code qui ne fonctionne pas, car le texte n'est pas modifié :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {$article->article|regex_replace:'/\<bold\>/':'<strong>'}
    J'ai réduit l'exemple au minimum afin de me concentrer uniquement sur cette histoire de <. Si j'enlève les \ avant les <, bien sûr cela ne fonctionne pas non plus, je les ai ajouté par la suite en espérant que cela changerait quelque chose .

    Autre question : mon code ayant beaucoup de pattern, j'aimerai ne pas avoir à le copier/coller dans toutes les pages qui en ont besoin. Je me demandais s'il était possible de faire quelque chose dans ce genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {$article->article|regex_replace:'/$pattern/':'$replacements'}
    $pattern et $replacements étant des variables assignées à Smarty.

    Merci à vous

  2. #2
    Membre Expert
    Avatar de eric.pommereau
    Homme Profil pro
    Ingénieur, pôle cartographie
    Inscrit en
    Décembre 2004
    Messages
    715
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur, pôle cartographie
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2004
    Messages : 715
    Par défaut
    Hello,

    J'ai regardé pour le premier cas, en fait tu n'as pas besoin d'échapper les '<' ou les '>' en mettant des backslashes.

    L'exemple suivant fonctionne bien chez moi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {$test_regexp|regex_replace:'/<i>/':'<b>'}
    Pour l'autre cas j'ai pas eu trop le temps de regarder, je te promets de regarder ça rapidement si personne ne te répond !!

    Un truc qui pourra t'aider : qu'est-ce qui se passe quand tu utilise le modificateur : regex_replace ?

    Si tu regardes le fichier compilé (dans templates_c) tu as un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php echo ((is_array($_tmp=$this->_tpl_vars['test_regexp'])) ? $this->_run_mod_handler('regex_replace', true, $_tmp, '/<i>/', '<b>') : smarty_modifier_regex_replace($_tmp, '/<i>/', '<b>')); ?>
    Dans ton cas (remplacement d'une chaîne de caractères), c'est la fonction smarty_modifier_regex_replace qui est appelée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function smarty_modifier_regex_replace($string, $search, $replace)
    {
        if (preg_match('!([a-zA-Z\s]+)$!s', $search, $match) && (strpos($match[1], 'e') !== false)) {
            /* remove eval-modifier from $search */
            $search = substr($search, 0, -strlen($match[1])) . preg_replace('![e\s]+!', '', $match[1]);
        }
     
        return preg_replace($search, $replace, $string);
    }
    Voilà ... si ça peut aider !!

    @++

Discussions similaires

  1. [RegEx] Regex et syntax Smarty
    Par cbalmefrezol dans le forum Langage
    Réponses: 6
    Dernier message: 08/12/2008, 00h45
  2. [Smarty] smarty et {insert}
    Par mohican13 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 24/02/2006, 12h27
  3. [Smarty] organisation avec smarty
    Par mohican13 dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 13/02/2006, 14h11
  4. [MySQL] tableau de données via BDD et Smarty
    Par taly dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 12/01/2006, 16h00

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