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" est disponible. Il vous permettra de recevoir chaque semaine un kata de code directement dans votre boîte mail, ainsi que des aides à la réalisation, des vidéos explicatives et des défis supplémentaires.