Compléter une chaîne avec un caractère
Il arrive dans certains cas que l'on veuille formater des chaînes pour qu'elles aient toute la même taille. Exemple : '001
, '002'
, '003'
, '010'
.
Et il met déjà arriver de voir ce genre de code :
$var = '1';
$length = strlen($var);
for ($i = $length; $i < 3; $i++) {
$var = '0'.$var;
}
// $var => '001'
Autant dire que ce code est assez barbare.
Savez-vous qu'il existe une méthode spécifique pour faire ce traitement ?
$var = '1';
$var = str_pad($var, 3, '0', STR_PAD_LEFT);
str_pad
permet de "rembourrer" une chaîne avec une autre, soit à droite (par défaut), soit à gauche, soit les deux.
$var = '1';
$var = str_pad($var, 3, '0');
// $var => '100'
$var = '1';
$var = str_pad($var, 3, '0', STR_PAD_BOTH);
// $var => '010'
Cette fonction peut aussi compléter avec plusieurs caractères (la chaîne de remplacement sera tronquée si on arrive à la taille voulue)
$var = '1';
$var = str_pad($var, 6, '*_*');
// $var => '1*_**_'
Si votre objectif est de répéter la chaîne d'origine, il y a une autre méthode : str_repeat
.
$var = '1';
$var = str_repeat($var, 3);
// $var => '111'
Ca marche aussi avec une chaîne qui a plus d'un caractère :
$var = 'abc';
$var = str_repeat($var, 3);
// $var => 'abcabcabc'
Mon programme "S'entraîner pour progresser en PHP" va bientôt ouvrir ses portes. Il te permettra de recevoir chaque semaine un kata de code directement dans ta boîte mail, ainsi que des aides à la réalisation, des vidéos explicatives, voire des live coding et de la review.