logo oujood
🔍

Fonction str_repeat() PHP : Répéter une chaîne de caractères

Guide complet et pédagogique sur str_repeat() avec exemples pratiques, cas d'usage avancés et bonnes pratiques de développement PHP.

OUJOOD.COM

PHP – Référence des fonctions de chaînes de caractères

Compatibilité : PHP 4, PHP 5, PHP 7, PHP 8 – str_repeat() est disponible dans toutes les versions modernes de PHP.

Qu'est-ce que la fonction str_repeat() en PHP ?

La fonction str_repeat() est une fonction native de PHP permettant de répéter une chaîne de caractères un nombre déterminé de fois. Elle est particulièrement utile pour générer des séparateurs, créer des motifs, remplir des buffers ou formater des sorties textuelles sans recourir à des boucles manuelles. Contrairement à une boucle for classique, str_repeat() est optimisée en interne par le moteur PHP, ce qui la rend plus performante et le code plus lisible.

Définition, syntaxe et paramètres de str_repeat()

Syntaxe officielle

str_repeat(string $string, int $times): string
ParamètreTypeDescription
$string string Requis. La chaîne de caractères à répéter. Peut contenir des espaces, caractères spéciaux, balises HTML ou toute séquence UTF-8.
$times int Requis. Nombre de répétitions. Doit être supérieur ou égal à 0. Si la valeur est 0, la fonction retourne une chaîne vide. Une valeur négative génère une erreur depuis PHP 8.

Valeur de retour : La fonction retourne une nouvelle chaîne (string) résultant de la concaténation de $string répétée $times fois. La chaîne originale n'est jamais modifiée.


Exemple 1 – Répétition simple d'un caractère

Le cas d'usage le plus basique : répéter une lettre ou un espace pour créer un motif visuel dans la sortie HTML ou console.

  📋 Copier le code

<?php
// str_repeat() répète la chaîne " a" (espace + lettre a) 13 fois
$resultat = str_repeat(" a", 13);
// Affiche : a a a a a a a a a a a a a
echo $resultat;
?>

Résultat :

 a a a a a a a a a a a a a

Exemple 2 – Générer un séparateur horizontal dynamique

Un cas d'usage très courant en PHP CLI ou dans la génération de rapports textuels : créer une ligne de séparation dynamique dont la longueur est paramétrable.

  📋 Copier le code

<?php
// Définition de la longueur du séparateur
$longueur = 40;
// str_repeat génère une ligne de 40 tirets sans boucle
$separateur = str_repeat("-", $longueur);
echo $separateur . "\n";
echo "Rapport mensuel des ventes" . "\n";
echo $separateur . "\n";
// Résultat :
// ----------------------------------------
// Rapport mensuel des ventes
// ----------------------------------------
?>

Exemple 3 – Indentation de code ou de contenu structuré

str_repeat() est idéale pour générer des indentations dynamiques dans un générateur de code, un formateur XML/HTML ou un exportateur de données arborescentes.

  📋 Copier le code

<?php
// Fonction utilitaire pour indenter du texte selon un niveau de profondeur
function indenter(string $texte, int $niveau = 1): string {
    // str_repeat crée l'indentation : 4 espaces par niveau
    $indent = str_repeat("    ", $niveau);
    return $indent . $texte;
}
// Simulation d'une structure arborescente indentée
echo indenter("<root>", 0) . "\n";
echo indenter("<item>Produit A</item>", 1) . "\n";
echo indenter("<item>Produit B</item>", 1) . "\n";
echo indenter("</root>", 0) . "\n";
// Résultat :
// <root>
//     <item>Produit A</item>
//     <item>Produit B</item>
// </root>
?>

Exemple 4 – Remplissage d'une chaîne à longueur fixe (padding manuel)

Bien que str_pad() soit dédiée au padding, comprendre comment recréer ce comportement avec str_repeat() permet d'appréhender la logique interne de manipulation de chaînes en PHP.

  📋 Copier le code

<?php
// Remplissage manuel d'une référence produit à 10 caractères avec des zéros
$reference = "42";
$longueurCible = 10;
// Calcul du nombre de zéros à ajouter avant la valeur
$nbZeros = $longueurCible - strlen($reference);
// str_repeat génère la chaîne de zéros nécessaire
$referenceFormatee = str_repeat("0", $nbZeros) . $reference;
echo $referenceFormatee;
// Résultat : 0000000042
?>

Exemple 5 – Comportement avec 0 répétition et PHP 8

Il est important de comprendre le comportement de str_repeat() dans les cas limites, notamment avec une valeur de répétition égale à zéro ou négative (PHP 8 strict).

  📋 Copier le code

<?php
// Répétition avec 0 : retourne une chaîne vide (comportement prévisible)
$vide = str_repeat("test", 0);
var_dump($vide);
// Résultat : string(0) ""
// En PHP 8, une valeur négative lève une ValueError
// str_repeat("test", -1); // ValueError: str_repeat(): Argument #2 must be greater than or equal to 0
// Bonne pratique : valider le paramètre avant l'appel
function repeterSecurise(string $chaine, int $fois): string {
    if ($fois < 0) return "";
    return str_repeat($chaine, $fois);
}
echo repeterSecurise("*", 5);
// Résultat : *****
?>

Bonnes pratiques et performances

En termes de performance PHP, str_repeat() surpasse systématiquement une boucle for équivalente pour les grandes répétitions, car elle utilise une allocation mémoire unique optimisée. Pour des répétitions de chaînes volumineuses en contexte haute charge, il est recommandé de stocker le résultat dans une variable plutôt que de rappeler str_repeat() dans une boucle externe. Depuis PHP 8.0, un argument négatif lève une ValueError explicite, ce qui améliore la robustesse du code.


Par carabde | Publié le 22 août 2014 | Mis à jour le 25 février 2026