Preg_replace et fonction
Zeos
Messages postés
3
Statut
Membre
-
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' .
merci d'avance .
PS : J'utilise PHP 5.
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
-
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); -
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
)