Ce forum est en partie financé par l’affichage de publicités. Merci de désactiver votre bloqueur de publicités pour nous permettre de continuer à fournir ce service.

Problème de mise à jour de variables

Discussion dans 'Développement web' créé par molgow, 29 Août 2003.

Modérateurs: Nephou
  1. molgow

    molgow Vétéran
    Club MacG

    Inscrit:
    4 Janvier 2002
    Messages:
    5 493
    J'aime reçus:
    612
    Regardez le code en bas de la page (désolé je voulais le mettre en haut, mais UBB est buggué)

    Le problème c'est que lorsque le script passe par la méthode handle_tag, il ne met pas à jour la variable nombre puisque à la fin du script lorsque je fais un echo $inter->nombre, il m'affiche toujours 0.
    Merci pour votre aide.. ce truc commence à me faire devenir fou [​IMG] [​IMG] [​IMG]

    PS: Ne me dites pas que je pourrais faire bien plus simple, je le sais. N'oubliez pas que ceci est juste un exemple très simplifié pour montrer mon problème.


    <font class="small">Code:</font><hr /><pre>&lt;?php

    class Interpreter
    {
    var $texte;
    var $nombre;

    function Interpreter($texte)
    {
    $this-&gt;texte = $texte;
    $this-&gt;nombre = 0;
    }

    function decode()
    {
    $this-&gt;texte = preg_replace_callback("#\[tag\](.*?)\[/tag\]#si", array($this, 'handle_tag'), $this-&gt;texte);
    }

    function handle_tag($matches)
    {
    $this-&gt;nombre++;
    echo 'passage dans la fonction handle_tag(), $this-&gt;nombre = ' . $this-&gt;nombre . '&lt;br&gt;';
    return "&lt;tag&gt;".$matches[1]."&lt;/tag&gt;";
    }

    }

    $inter = new Interpreter("[tag]toto[/tag] \n [tag]titi[/tag]");
    $inter-&gt;decode();
    echo '$inter-&gt;nombre = ' . $inter-&gt;texte . '&lt;br&gt;';
    echo '$inter-&gt;nombre = ' . $inter-&gt;nombre . '&lt;br&gt;';

     
  2. leo

    leo Membre confirmé

    Inscrit:
    22 Mars 2000
    Messages:
    135
    J'aime reçus:
    0
    Comme vu dans la doc de ton preg_replace_callback, preg_replace_callback

    Donc:

    Code (Text):
     preg_replace_callback("#\[tag\](.*?)\[/tag\]#si", array(&amp;$this, 'handle_tag'), $this-&gt;texte)

    et hop!

    -l
     
Modérateurs: Nephou
Chargement...