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.

PHP à la rescousse

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*_**_'

Et si je veux simplement répéter la même chaîne un certain nombre de fois

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'

Cet article t'a plu ? Si oui, je te propose de t'inscrire à ma dev letter pour recevoir régulièrement dans ta boîte mail mes conseils, mes nouveaux articles, des vidéos à voir, des outils à découvrir et encore bien d’autres choses.

Je m'inscris