[PHP]mise en forme avec sprintf

Résolu
Dauphin64 Messages postés 2 Statut Membre -  
 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 ?
Configuration: Windows XP
Firefox 3.0.5

2 réponses

  1. toto
     
    Bonjour

    Ç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);
    0
  2. Dauphin64 Messages postés 2 Statut Membre
     
    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);
    0
    1. toto
       
      C'est la fonction "faite pour". Nettement mieux que mon bricolage avec eval.
      0