[PHP]mise en forme avec sprintf [Résolu/Fermé]
Signaler
Dauphin64
toto -
- Messages postés
- 2
- Date d'inscription
- dimanche 1 février 2009
- Statut
- Membre
- Dernière intervention
- 1 février 2009
toto -
Bonjour,
voila dans ma base de donnée, je récupère d'un coté le format du message ($format) à afficher et d'un autre un tableau ($arg = array()) contenant les arguments à insérer dans ce message.
Je souhaite donc à partir de ces données afficher mon message à l'aide de la fonction sprintf. J'ai essayé sprintf($format, $arg) et sprint($format, implode(',', $arg)) mais ni l'un ni l'autre ne fonctionnent, dans les deux cas j'obtiens le message d'erreur : Too few arguments :(
Avez vous une solution à ce problème, sachant que tous les messages n'ont pas le même nombre d'arguments ?
voila dans ma base de donnée, je récupère d'un coté le format du message ($format) à afficher et d'un autre un tableau ($arg = array()) contenant les arguments à insérer dans ce message.
Je souhaite donc à partir de ces données afficher mon message à l'aide de la fonction sprintf. J'ai essayé sprintf($format, $arg) et sprint($format, implode(',', $arg)) mais ni l'un ni l'autre ne fonctionnent, dans les deux cas j'obtiens le message d'erreur : Too few arguments :(
Avez vous une solution à ce problème, sachant que tous les messages n'ont pas le même nombre d'arguments ?
A voir également:
- [PHP]mise en forme avec sprintf
- [PHP]mise en forme avec sprintf ✓ - Forum - PHP
- Php mise en forme d'un site ✓ - Forum - PHP
- PHP Mise en forme tableau alternance couleur ✓ - Forum - PHP
- Mise en forme sous php... ✓ - Forum - PHP
- Mise en forme sur php ✓ - Forum - PHP
2 réponses
toto
Bonjour
Ça n'est peut-être pas le plus simple :
Ça n'est peut-être pas le plus simple :
$cmd= 'return sprintf($format'; for ($k=0; $k<count($arg); $k++) $cmd.=",\$arg[$k]"; $cmd.=');'; echo eval($cmd);
Dauphin64
- Messages postés
- 2
- Date d'inscription
- dimanche 1 février 2009
- Statut
- Membre
- Dernière intervention
- 1 février 2009
en effet je n'ai pas pense à eval, merci toto.
Une autre solution qui viens de m'être fournie en utilisant call_user_func_array() et qui fonctionne aussi :
$param = array();
$param[0] = $format;
foreach($arg as $a) { $param[] = $a; }
$message = call_user_func_array('sprintf', $param);
Une autre solution qui viens de m'être fournie en utilisant call_user_func_array() et qui fonctionne aussi :
$param = array();
$param[0] = $format;
foreach($arg as $a) { $param[] = $a; }
$message = call_user_func_array('sprintf', $param);