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 :

preg_replace bug !


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Mai 2008
    Messages
    317
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 317
    Par défaut preg_replace bug !
    Bonjour à tous.

    j'ai un soucis avec ma fonction preg_replace;
    je l'utilise pour faire du BB code, et je n'arrive pas a passé un fonction dans le remplacement:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $string = preg_replace(
       "#\[CODE\](.*)\[/CODE\]#isU", 
       "<div class='code'>".colorize_code("$1")."</div>",
       $string);
    sauf que le colorize_code() ne fonctionne pas du tout.
    quelqu'un saurait il comment faire ?

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Pour que le code (deuxième paramètre de preg_replace) soit évalué pour chaque capture et non une seule fois avant comme ici, il faut utiliser la fonction preg_replace_callback et effectuer vos traitements dans votre fonction de rappel ou éventuellement utiliser l'option e pour garder preg_replace (en modifiant ce second paramètre).

    Soit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $string = preg_replace(
       "#\[CODE\](.*)\[/CODE\]#isUe", 
       "'<div class=\"code\">' . highlight_string('$1') . '</div>'",
       $string);
    Ou :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    # En 5.3 et + sinon il faut mettre/créer une fonction à part
    $string = preg_replace_callback(
       "#\[CODE\](.*)\[/CODE\]#isU", function ($matches) { return '<div class="code">' . colorize_code($matches[1]) . '</div>'; },
       $string);

Discussions similaires

  1. [RegEx] BUG : preg_replace et match
    Par gloubi dans le forum Langage
    Réponses: 1
    Dernier message: 10/07/2006, 21h52
  2. Bug new build ??
    Par rgarnier dans le forum XMLRAD
    Réponses: 4
    Dernier message: 31/01/2003, 10h30

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