Preg_replace et fonction

Bonjour,j'ai crée un fonction tag qui crée développe mes tag a partir d'une chaine de caractère (en php)
le problème est que je fait des 'preg_replace' et comme sortit je l'attribut a une fonction , la fonction ne reçois pas la sortit du 'preg_replace' mes sa variable '$1 et $2' .
<php

function typographie($lettre,$size)
{ ........ }

function tag($chaine)
    {

$chaine = Preg_replace('#\{tag:typo\((.+)\|(.)\)\}#isU', typographie("$2","$1"), $chaine); 

return $chaine;
}

$tmp_test = 'mon {tag:typo(15|C)}hat est beaux';

$tmp_test = tag($tmp_test);

echo $tmp_test;

// ce qui devrai afficher "mon C('c' typographique)hat est beaux

?>

merci d'avance .
PS : J'utilise PHP 5.

2 réponses

  1. Non, ça ne devrait aps t'afficher ça. Tu devrais plutot utiliser preg_match_all pour ce que tu veux faire. Preg_replace remplace mais ne supprime pas ce qui ne t'arrange pas.
    Pour mieux comprendre, teste juste un var_dump($chaine = Preg_replace('#\{tag:typo\((.+)\|(.)\)\}#isU', "$2","$1", $chaine);
    0
    1. Je viens de reformulée mon script pour que cela sois plus compréhensible :
      <?php
      function test()
        {
          echo '<pre>';
          print_r(func_get_args());
          echo '</pre>';
        }
      
      function tag($chaine,$ACT)
        {
           if  $chaine = preg_replace('#\{tag:typo\((.+)\|(.)\)\}#isU', test("$2","$1"), $chaine); //  ex :{tag:typo(15|H)}
      
      
      echo tag('{tag:typo(15|H)}');
      
      ?>
      
      


      Ce qui s'affiche :

      Array
      (
      [0] => $2
      [1] => $1
      )
      0