str_pad
str_pad($string, $length, $pad_string, $pad_type)
Complète la chaîne $string en répétant la chaîne $pad_string jusqu’à la longueur $length – à droite, à gauche ou des deux côtés. Si la chaîne est déjà plus longue, elle la renvoie inchangée. Elle sert le plus souvent aux nombres avec des zéros initiaux ou à l’affichage aligné de texte.
Paramètres
- $string – chaîne à compléter.
- $length – longueur souhaitée (comptée en octets).
- $pad_string – facultatif, ce qui sert à compléter. Une espace par défaut.
- $pad_type – facultatif, STR_PAD_RIGHT (par défaut, à droite), STR_PAD_LEFT (à gauche) ou STR_PAD_BOTH (des deux côtés).
Exemples
echo str_pad("7", 3, "0", STR_PAD_LEFT); // 007
echo str_pad("PHP", 9, "*", STR_PAD_BOTH); // ***PHP***
echo str_pad("PHP", 8, "-="); // PHP-=-=-
echo str_pad("garth.cz", 5); // garth.cz
// numéro de commande
$number = 42;
echo "CMD-" . str_pad($number, 6, "0", STR_PAD_LEFT); // CMD-000042
// affichage aligné – attention aux lettres accentuées, la longueur est en octets
echo str_pad("Prix", 10, ".") . "|"; // Prix......|
echo str_pad("Durée", 10, ".") . "|"; // Durée....|
Points d’attention
- La longueur se compte en octets, pas en caractères. Un texte avec des accents est donc moins complété – « Durée » a 5 caractères mais 6 octets, seuls quatre points s’ajoutent donc pour atteindre 10. mb_str_pad(), qui travaille sur les caractères, n’existe que depuis PHP 8.3.
- La fonction ne sait pas raccourcir – un texte plus long reste entier. Pour raccourcir, il y a substr() ou mb_substr().
- Pour les nombres avec des zéros initiaux, sprintf("%06d", $number) fonctionne tout aussi bien.
- Une chaîne vide dans $pad_string est interdite : PHP 7 renvoie null avec un avertissement, PHP 8 lance une exception ValueError.
Fonctions associées :
sprintf()
substr()
strlen()
mb_str_pad()