Preg_replace et fonction

Zeos Messages postés 3 Statut Membre -  
Zeos Messages postés 3 Statut Membre -
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. Archeus01 Messages postés 1566 Date d'inscription   Statut Membre Dernière intervention   455
     
    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
  2. Zeos Messages postés 3 Statut Membre
     
    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