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
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><?php
class Interpreter
{
var $texte;
var $nombre;
function Interpreter($texte)
{
$this->texte = $texte;
$this->nombre = 0;
}
function decode()
{
$this->texte = preg_replace_callback("#\[tag\](.*?)\[/tag\]#si", array($this, 'handle_tag'), $this->texte);
}
function handle_tag($matches)
{
$this->nombre++;
echo 'passage dans la fonction handle_tag(), $this->nombre = ' . $this->nombre . '<br>';
return "<tag>".$matches[1]."</tag>";
}
}
$inter = new Interpreter("[tag]toto[/tag] \n [tag]titi[/tag]");
$inter->decode();
echo '$inter->nombre = ' . $inter->texte . '<br>';
echo '$inter->nombre = ' . $inter->nombre . '<br>';
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
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><?php
class Interpreter
{
var $texte;
var $nombre;
function Interpreter($texte)
{
$this->texte = $texte;
$this->nombre = 0;
}
function decode()
{
$this->texte = preg_replace_callback("#\[tag\](.*?)\[/tag\]#si", array($this, 'handle_tag'), $this->texte);
}
function handle_tag($matches)
{
$this->nombre++;
echo 'passage dans la fonction handle_tag(), $this->nombre = ' . $this->nombre . '<br>';
return "<tag>".$matches[1]."</tag>";
}
}
$inter = new Interpreter("[tag]toto[/tag] \n [tag]titi[/tag]");
$inter->decode();
echo '$inter->nombre = ' . $inter->texte . '<br>';
echo '$inter->nombre = ' . $inter->nombre . '<br>';