Modérateur
Bonjour,

Je souhaiterais nommer (de manière dynamique et avec php) des fichiers de la manière suivante :
ref-0001.json
ref-0002.json
ref-0003.json
...
ref-0028.json
...
ref-0179.json

Je récupère dans un premier temps l'id de mes fichiers (1, 2, 3, 4), enseuite, je souhaiterais ajouter les 0 qui manquent pour obtenir le nom de mon fichier ref-xxxx. Exemples :
id = 5 » ref-0005.json
id = 27 » ref-0027.json

Vous avez compris que je ne sais pas comment faire pour ajouter les 0 avant l'id (peut-être existe-t-il une fonction php qui fait ça, j'ai regardé du côté de number_formatter mais je crains fort que cela ne me sera d'aucune utilité. Il me faudra peut-être fare quelque chose de plus complexe : vérifier le nombre de chiffres de l'id, puis compléter avec les 0 qu'il faut, mais comment fait-on pour obtenir le nombre de chiffres d'un nombre ? (houla, désolé pour les répétitions !)

Merci d'avance.
Modérateur
Je pense avoir trouvé une solution "simple" (pas testée) :
if (strlen($id) == 1) file_name = 'ref-000'.$id.'.json';
elseif (strlen($id) == 2) file_name = 'ref-00'.$id.'.json';
elseif (strlen($id) == 3) file_name = 'ref-0'.$id.'.json';
elseif (strlen($id) == 4) file_name = 'ref-'.$id.'.json';
Modérateur
sprintf() fonctione bien, mais aussi str_pad():


$file_name = 'ref-' . str_pad($id, 4, '0', STR_PAD_LEFT) . '.json'; // équivalent à sprintf('%04s', $id)
$file_name = 'ref-' . sprintf("%04d", $id) . '.json';

Modifié par kustolovic (31 Mar 2015 - 17:09)