Preg_replace et fonction

Fermé
Zeos Messages postés 3 Date d'inscription mercredi 22 juillet 2009 Statut Membre Dernière intervention 5 août 2009 - 5 août 2009 à 11:47
Zeos Messages postés 3 Date d'inscription mercredi 22 juillet 2009 Statut Membre Dernière intervention 5 août 2009 - 5 août 2009 à 12:10
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.
A voir également:

2 réponses

Archeus01 Messages postés 1572 Date d'inscription mercredi 3 octobre 2007 Statut Membre Dernière intervention 9 juin 2022 452
5 août 2009 à 11:59
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
Zeos Messages postés 3 Date d'inscription mercredi 22 juillet 2009 Statut Membre Dernière intervention 5 août 2009
5 août 2009 à 12:10
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

Discussions similaires