Navigation
 Startseite
 Fachbücher
 Anzeigenmarkt
 Forum
 Webmaster News
 Script Newsletter
 Kontakt
 Script Installation
 Php
 Php Tutorials
 Lernpfade
 Webhoster Vergleich
 Impressum

Community-Bereich
 kostenlos Registrieren
 Anmelden
 Benutzerliste

Script Datenbank
 Script Archiv
 Script Top 20
 Screenshots
 Testberichte

Suche
 

Unsere Php Scripts
 Counter Script
 Umfrage Script
 Bilder Upload Script
 Terminverwaltung
 Simple PHP Forum
 RSS Grabber

Tools und Generatoren
 .htpasswd Generator
 md5 Generator
 base64 Generator
 Markdown to HTML
 Colorpicker
 Unix timestamp Tool
 Unit Test Generator
 TLD Liste
 Webkatalog‑Verzeichnis

Hosterplus.de
Bekommen Sie Speicherplatz (Webspace), Domains...
https://www.Hosterplus.de
Artfiles.de
Bietet Serviceorientierte...
https://www.Artfiles.de
 
 
 

PHP str_repeat(): Strings wiederholt erzeugen

Sie befinden sich: Home > Php Tutorial > PHP str_repeat(): Strings w...

PHP str_repeat(): Strings wiederholt erzeugen
Eintrag am:
27.07.2026
Hits / Besucher:
13
Sprache:
  Deutsch
Tutorial Art:
eigenes
Eingetragen von:
Merkliste:
 
Beschreibung

Trennlinien in einem Konsolen-Report, Rahmen für eine ASCII-Tabelle oder ein Test-String mit exakt 100.000 Zeichen: solche Aufgaben lassen sich in PHP mit einer einzigen Zeile erledigen, statt eine Schleife zu bauen. Dieses Tutorial zeigt die passende Funktion mit Syntax, Sonderfällen und einem Blick auf die Performance.

Was macht die Funktion PHP str_repeat()?

Wer in PHP eine Trennlinie unter einem Konsolen-Report braucht, einen ASCII-Tabellenrahmen aufbaut oder einen Test-String mit definierter Länge erzeugen will, kommt schnell zu PHP str_repeat. Die Funktion nimmt einen Eingabe-String und eine Anzahl entgegen und liefert das Ergebnis der n-fachen Aneinanderhängung zurück. Damit ersetzt sie eine for-Schleife mit Konkatenation und macht den Code in einer Zeile lesbar.

Illustration zum Tutorial: PHP str_repeat(): Strings wiederholt erzeugen

Bevor die Syntax, die Sonderfälle bei 0 und negativen Werten und der Performance-Vergleich folgen, ein einfaches Beispiel zur Mechanik.

Die Mechanik ist denkbar einfach. Aus str_repeat('-', 30) wird ein String aus 30 Bindestrichen, aus str_repeat('PHP ', 3) wird 'PHP PHP PHP '. Damit wird PHP str_repeat zum klassischen Helfer für alles, was wiederholungsbasiert aufgebaut werden muss, von Trennstrichen über Padding-Vorbereitungen bis hin zu Last-Test-Strings.

Syntax und Rückgabewert

Die Signatur ist einer der kürzesten der String-Funktionen. PHP str_repeat erwartet genau zwei Argumente: den zu wiederholenden String und die Anzahl der Wiederholungen.

<?php

str_repeat(string $string, int $times): string

Der Rückgabewert ist ein neuer String, der die Wiederholungen enthält. Wer einen leeren String wiederholt, bekommt erwartungsgemäß wieder einen leeren String. Wer den Original-String einmal bekommt, ruft mit $times = 1 auf. Die Funktion arbeitet intern in C und ist deutlich schneller als eine PHP-Schleife mit .= Konkatenation, was sie zur ersten Wahl für wiederkehrende Aufgaben macht.

Verhalten bei 0 und negativen Werten

Drei Sonderfälle sollten bewusst sein. Bei $times = 0 liefert PHP str_repeat einen leeren String, nicht den Original-String. Bei $times = 1 kommt der Originalstring zurück. Bei einem negativen Wert wirft die Funktion seit PHP 8 einen ValueError, vorher gab es eine Warnung und einen leeren String.

<?php

echo '|' . str_repeat('PHP', 0) . '|' . "\n";
/* || (leer) */

echo '|' . str_repeat('PHP', 1) . '|' . "\n";
/* |PHP| */

try {
echo str_repeat('PHP', -1);
} catch (ValueError $e) {
echo $e->getMessage();
/* str_repeat(): Argument #2 ($times) must be greater than or equal to 0 */
}

Wer aus Variablen rechnet, sollte das Ergebnis vor der Übergabe prüfen. Ein typischer Fall ist die Padding-Berechnung $ziel - strlen($wert), die negativ wird, wenn der Eingabe-String bereits länger ist als die Ziellänge. Eine max(0, $diff)-Klammer schützt vor unerwarteten Exceptions.

Trennlinien für CLI-Ausgaben

Der wahrscheinlich häufigste Anwendungsfall ist die Erzeugung einer Trennlinie in einem Konsolen-Report. Drei Aufrufe von PHP str_repeat reichen, um einen sauberen Header mit Rahmen zu setzen.

<?php

$titel = ' Tagesreport 15.05.2026 ';
echo str_repeat('=', 50) . "\n";
echo str_pad($titel, 50, ' ', STR_PAD_BOTH) . "\n";
echo str_repeat('=', 50) . "\n";
/* ==================================================
Tagesreport 15.05.2026
================================================== */

Die Kombination mit str_pad() ist hier besonders wirkungsvoll, weil str_pad das eigentliche Auffüllen übernimmt und PHP str_repeat den Rahmen liefert. Wer mehrere Sektionen im selben Skript braucht, kapselt das in eine kleine Helper-Funktion und gewinnt sofort an Lesbarkeit.

ASCII-Header und Tabellenrahmen

Ein zweiter Klassiker sind ASCII-Tabellen mit Spalten unterschiedlicher Breite. PHP str_repeat erzeugt die Trennzellen, ein implode bindet sie zusammen.

<?php

$breiten = [20, 12, 10];
$trenner = '+' . implode('+', array_map(
fn($b) => str_repeat('-', $b),
$breiten
)) . '+';

echo $trenner . "\n";
/* +--------------------+------------+----------+ */

Wer das Pattern erweitert, kann ohne großen Aufwand eine vollständige ASCII-Tabelle bauen, in der Header, Datenzeilen und Trenner sich abwechseln. Für kleine Reports, CLI-Tools und Cron-Berichte ist das oft die schnellste Lösung, ohne eine externe Bibliothek einzubinden.

Padding-Generierung als Helfer

Auch wenn str_pad() für Padding-Aufgaben die spezialisierte Variante ist, lohnt sich der Blick auf PHP str_repeat als Helfer. Wer mit eigenen Pad-Strings oder komplexen Mustern arbeitet, kommt mit der Kombination beider Funktionen schnell zum Ziel.

<?php

$wert = '42';
$ziel = 8;
$fehlend = max(0, $ziel - strlen($wert));
$padded = str_repeat('0', $fehlend) . $wert;
echo $padded;
/* 00000042 */

Diese Variante ist kein Ersatz für str_pad, hilft aber, das Konzept dahinter zu verstehen. Im echten Code sollte für Standard-Padding str_pad() genutzt werden, weil es die drei Pad-Modi und die Default-Werte sauber abbildet. PHP str_repeat kommt dann ins Spiel, wenn ein wiederholtes Muster anders aufgebaut werden muss.

Performance: str_repeat vs. for-Schleife

Wer sich fragt, ob die Funktion wirklich schneller ist als eine eigene Schleife, kann das mit ein paar Zeilen testen. Die Differenz wird mit großen Anzahlen schnell sichtbar.

<?php

$start = microtime(true);
$out = str_repeat('x', 100000);
$dauer1 = microtime(true) - $start;

$start = microtime(true);
$out = '';
for ($i = 0; $i < 100000; $i++) {
$out .= 'x';
}
$dauer2 = microtime(true) - $start;

printf(
"str_repeat: %.4f s\nSchleife: %.4f s",
$dauer1, $dauer2
);
/* str_repeat ist deutlich schneller, oft Faktor 50+ */

Der Unterschied liegt im Speichermanagement. Die Schleifenkonkatenation muss bei jedem .= einen neuen String erzeugen und den alten kopieren, weil PHP-Strings unveränderlich sind. PHP str_repeat reserviert einmal den Zielspeicher und schreibt das Muster direkt hinein. Mit der eingebauten microtime-Funktion lässt sich der Effekt im eigenen Projekt nachstellen.

Praxisanwendungen Test-Daten

Wer Performance-Tests schreibt oder Datenbankindizes mit langen Strings prüft, nutzt PHP str_repeat als bequemen Generator. Aus einem kurzen Stück Text wird mit einer Zeile ein langer Block.

<?php

$kurzText = 'Ein Beispieltext, der wiederholt wird. ';
$grosserText = str_repeat($kurzText, 1000);

echo strlen($grosserText) . ' Zeichen' . "\n";
/* 39000 Zeichen */

/* fuer Lasttests einer Volltextsuche */
echo substr($grosserText, 0, 80) . '...';

Solche Test-Daten sind in Unit-Tests, Integration-Tests oder Profile-Runs Gold wert. Sie sind reproduzierbar, kostenfrei und schnell zu generieren. Wer zufällige Texte braucht, kombiniert PHP str_repeat mit random_bytes() oder einem Lorem-Ipsum-Helfer und gewinnt damit eine variable Test-Pipeline.

Welchen Weg die Funktion je nach übergebener Anzahl einschlägt, fasst das folgende Diagramm zusammen.


flowchart TD
    A[Eingabe-String] --> B[Anzahl Wiederholungen N]
    B --> C{N > 0?}
    C -->|ja| D[N-fache Wiederholung im C-Kern]
    C -->|0| E[leerer String]
    C -->|negativ| F[ValueError]
    D --> G[Ergebnis-String]
    E --> G

Fazit

Mit PHP str_repeat steht ein kompakter und schneller Helfer zur Verfügung, der Wiederholungs-Patterns in einer einzigen Zeile erzeugt. Die Funktion glänzt bei Trennlinien, ASCII-Tabellenrahmen, Padding-Vorbereitungen und Test-Daten. Im Vergleich zu einer for-Schleife mit Konkatenation ist sie nicht nur lesbarer, sondern auch deutlich performanter, weil sie intern in C arbeitet und einmaligen Speicher reserviert. Wer die drei Sonderfälle bei $times = 0, 1 und negativen Werten kennt, ist auf der sicheren Seite und kann PHP str_repeat als verlässlichen Standard-Baustein in jeder Konsolen-Anwendung und jedem Performance-Test einsetzen.

 

Tags:

 

 

Kommentare (0)

Noch keine Kommentare. Sei der Erste!

Melde dich an, um einen Kommentar zu schreiben.
Bücherregal mit drei Büchern: 'PHP 4 - Grundlagen und Profiwissen' von Hanser Verlag, 'Webdesign in a Nutshell' von O'Reilly Verlag, und 'Webgestaltung' von Galileo Computing.