par
Hubert Roksor » 18 janv. 2007, 00:13
Erm, je vois. Il te faut utiliser preg_replace_callback(), mais l'inconvénient c'est que tes variables n'appartiendront pas au bon "scope" (autrement dit, $date n'est pas défini à l'intérieur d'une autre fonction). D'un autre côté, si la seule variable est $date alors tu peux replacer ta regex par quelque chose de beaucoup plus simple comme
preg_replace('!\\[\\$date\\]!isU', date('r'), $xml["titre"]);
Tu peux aussi utiliser le
modifier e mais c'est potentiellement un gros risque au niveau de la sécurité.
À n'utiliser que si tu contrôles 100% du contenu du fichier XML
preg_replace('!\\[\\$([a-z_0-9]+)\\]!isUe', '$$1', $xml["titre"]);
...où
$1 sera remplacé par le nom de la variable, ce qui donnera donc
$date qui sera ensuite évalué par PHP pour donner la date.
Sinon, tu peux aussi t'intéresser à XSLT, dès qu'on comprend comment ça marche ça rend de grands services.
Erm, je vois. Il te faut utiliser preg_replace_callback(), mais l'inconvénient c'est que tes variables n'appartiendront pas au bon "scope" (autrement dit, $date n'est pas défini à l'intérieur d'une autre fonction). D'un autre côté, si la seule variable est $date alors tu peux replacer ta regex par quelque chose de beaucoup plus simple comme
[php]preg_replace('!\\[\\$date\\]!isU', date('r'), $xml["titre"]);[/php]
Tu peux aussi utiliser le [i]modifier[/i] [b]e[/b] mais c'est potentiellement un gros risque au niveau de la sécurité. [b][color=red]À n'utiliser que si tu contrôles 100% du contenu du fichier XML[/color][/b]
[php]preg_replace('!\\[\\$([a-z_0-9]+)\\]!isUe', '$$1', $xml["titre"]);[/php]
...où [b]$1[/b] sera remplacé par le nom de la variable, ce qui donnera donc [b]$date[/b] qui sera ensuite évalué par PHP pour donner la date.
Sinon, tu peux aussi t'intéresser à XSLT, dès qu'on comprend comment ça marche ça rend de grands services.