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_pad(): Strings auffüllen für CLI-Tabellen und Zahlen

Sie befinden sich: Home > Php Tutorial > PHP str_pad(): Strings auff...

PHP str_pad(): Strings auffüllen für CLI-Tabellen und Zahlen
Eintrag am:
27.07.2026
Hits / Besucher:
14
Sprache:
  Deutsch
Tutorial Art:
eigenes
Eingetragen von:
Merkliste:
 
Beschreibung

Sobald Ausgaben in einer Konsole, in einem CSV-Export oder auf einem Beleg ordentlich untereinander stehen sollen, braucht es Strings mit einheitlicher Länge. PHP bringt dafür eine Funktion mit, die genau eine Aufgabe erledigt und sie sehr gut erledigt. Dieses Tutorial zeigt Syntax, die drei Pad-Modi und die typischen Praxisfälle vom Zero-Padding bis zur ASCII-Tabelle.

Was macht die Funktion PHP str_pad()?

Wer in PHP Belegnummern mit führenden Nullen darstellt, eine CLI-Tabelle ausrichtet oder einen zentrierten Header in eine Konsole setzen will, greift zu PHP str_pad. Die Funktion füllt einen String auf eine vorgegebene Mindestlänge auf, indem sie ein wiederholtes Pad-Zeichen links, rechts oder beidseitig anhängt. Damit wird sie zum Standard-Werkzeug für alles, was nach festen Spaltenbreiten oder gleichen Zahllängen verlangt.

Illustration zum Tutorial: PHP str_pad(): Strings auffüllen für CLI-Tabellen und Zahlen

Bevor Syntax und die drei Pad-Konstanten im Detail folgen, ein Hinweis darauf, warum das Verhalten bei zu langen Strings immer wieder zu Diskussionen führt.

Die Funktion arbeitet im Kern mit drei Konstanten: STR_PAD_LEFT, STR_PAD_RIGHT und STR_PAD_BOTH. Im Default-Fall wird rechts mit Leerzeichen aufgefüllt. Die Reihenfolge der Argumente und das Verhalten bei zu langen Strings sorgen dabei in Code-Reviews regelmäßig für Diskussionen, weil PHP str_pad bei einem längeren Eingabe-String nicht kürzt, sondern unverändert zurückgibt.

Syntax und die vier Parameter

Die Signatur erwartet bis zu vier Argumente: den Eingabestring, die Ziellänge, das Pad-Zeichen und den Pad-Typ. Letzte beide haben sinnvolle Defaults.

<?php

str_pad(
string $string,
int $length,
string $pad_string = ' ',
int $pad_type = STR_PAD_RIGHT
): string

Wichtig zu wissen: Die $length ist die ZIEL-Länge, nicht die Anzahl der hinzugefügten Zeichen. Wer aus '42' eine 8-stellige Belegnummer machen will, ruft PHP str_pad mit $length = 8 auf, nicht mit 6. Der Eingabestring bleibt unverändert, wenn er bereits länger oder gleich lang ist. Wer auf eine exakte Länge bestehen will, kombiniert mit substr() (siehe weiter unten).

Die drei Konstanten STR_PAD_LEFT, RIGHT, BOTH

Die drei Konstanten steuern, wo das Pad-Zeichen eingefügt wird. STR_PAD_RIGHT (Default) hängt rechts an und ist typisch für Spaltenausrichtungen mit linksbündigem Text. STR_PAD_LEFT hängt links an und ist die Wahl für Zero-Padding von Zahlen oder rechtsbündige Spalten. STR_PAD_BOTH verteilt die Pad-Zeichen auf beide Seiten und eignet sich für zentrierte Überschriften.

<?php

echo '|' . str_pad('PHP', 10) . '|' . "\n";
/* |PHP | (rechts gepaddet, default) */

echo '|' . str_pad('PHP', 10, '0', STR_PAD_LEFT) . '|' . "\n";
/* |0000000PHP| (links gepaddet) */

echo '|' . str_pad('PHP', 10, '-', STR_PAD_BOTH) . '|' . "\n";
/* |---PHP----| (beidseitig, mehr rechts) */

Bei STR_PAD_BOTH und ungerader Differenz wandert das zusätzliche Zeichen nach rechts. Aus 'PHP' (3 Zeichen) auf 10 macht PHP str_pad also 3 Striche links und 4 rechts. Wer das umgekehrt haben möchte, pad-pad sich die Strings in zwei Schritten oder berechnet das Padding selbst.

Zero-Padding für Zahlen und Belegnummern

Eines der häufigsten Anwendungsbeispiele ist das Zero-Padding einer fortlaufenden Nummer. Aus 42 wird '00000042', aus 1234 wird '00001234'. Das schafft saubere Sortierungen in Listen und macht Belegnummern auf Berichten optisch einheitlich.

<?php

$beleg = str_pad((string)42, 8, '0', STR_PAD_LEFT);
echo $beleg;
/* 00000042 */

/* Aktenzeichen mit Praefix */
$nr = 42;
$aktenzeichen = 'AZ-' . str_pad((string)$nr, 6, '0', STR_PAD_LEFT);
echo $aktenzeichen;
/* AZ-000042 */

Wichtig ist die explizite Konvertierung mit (string). PHP castet zwar automatisch, doch die explizite Variante macht im Code-Review klar, dass hier ein Integer in einen String umgewandelt wird, bevor PHP str_pad ihn entgegen nimmt. Bei statischen Analysetools wie PHPStan ist das ebenfalls die saubere Lösung.

CLI-Tabellen sauber ausrichten

In Konsolen-Skripten ist PHP str_pad das Mittel der Wahl, um Tabellen mit festen Spaltenbreiten zu erzeugen. Linksbündige Spalten nutzen STR_PAD_RIGHT, rechtsbündige Spalten (typisch für Geldwerte) nutzen STR_PAD_LEFT.

<?php

$kunden = [
['Mueller GmbH', 1234.50],
['Schmidt AG', 89.00],
['Hubel KG', 12345.99],
];

foreach ($kunden as $z) {
$name = str_pad($z[0], 20);
$betrag = str_pad(
number_format($z[1], 2, ',', '.'),
12,
' ',
STR_PAD_LEFT
);
echo $name . $betrag . "\n";
}
/* Mueller GmbH 1.234,50
Schmidt AG 89,00
Hubel KG 12.345,99 */

Die Kombination aus PHP str_pad und number_format() ist das Standard-Werkzeug für Reports in der Konsole, in CSV-Exports oder als Vorbereitung für ein PDF-Layout. Wer einen ASCII-Tabellen-Header braucht, kombiniert das Ganze mit str_repeat('-', $breite) als Trennlinie.

str_pad vs sprintf

Im PHP-Alltag stehen str_pad und sprintf oft nebeneinander. Beide können Zahlen mit führenden Nullen erzeugen, aber sie haben unterschiedliche Stärken. PHP str_pad ist flexibler bei beliebigen Pad-Zeichen (Bindestrich, Stern, Punkt), sprintf ist kompakter, wenn ganze Format-Strings mit mehreren Werten zusammengesetzt werden.

<?php

/* Beide erzeugen denselben Output */
echo str_pad((string)42, 5, '0', STR_PAD_LEFT) . "\n";
/* 00042 */

echo sprintf('%05d', 42) . "\n";
/* 00042 */

/* sprintf mit mehreren Werten */
echo sprintf('Beleg %05d am %s', 42, date('d.m.Y'));
/* Beleg 00042 am 15.05.2026 */

Die Faustregel im Team: sprintf() für Zahlen-Templates und kombinierte Formatierungen, PHP str_pad für Strings mit beliebigen Pad-Zeichen oder für reine Padding-Aufgaben. So bleibt der Code lesbar und keine Funktion wird zwanghaft für Aufgaben gebogen, die der anderen besser liegen.

Multibyte-Falle und mb_str_pad

PHP str_pad arbeitet byte-basiert. Solange ein String nur ASCII enthält, entspricht ein Byte einem Zeichen. Sobald Umlaute oder Emoji ins Spiel kommen, zählen die Mehrbyte-Zeichen mehrfach und das Padding stimmt nicht mehr.

<?php

$titel = 'Müller-Liste';
$pad1 = str_pad($titel, 30);
$pad2 = mb_str_pad($titel, 30);

echo "|$pad1|" . "\n";
echo "|$pad2|" . "\n";
/* str_pad zaehlt Bytes (mehr als 30 in Wirklichkeit)
mb_str_pad zaehlt Zeichen, das Padding wird optisch korrekt */

Seit PHP 8.3 steht mb_str_pad() als Multibyte-Variante zur Verfügung. Sie hat dieselbe Signatur, akzeptiert die gleichen Konstanten und arbeitet zeichenbasiert. Wer PHP 8.2 oder älter im Einsatz hat, kann mit Polyfills oder Wrapper-Funktionen arbeiten, die intern mb_strlen() und str_repeat() kombinieren.

Praxis-Wrapper für fixe Länge

Manchmal reicht das Auffüllen nicht, ein Feld muss exakt N Zeichen lang sein. PHP str_pad alleine garantiert das nicht, weil ein zu langer String unverändert zurückkommt. Ein kleiner Wrapper mit substr() löst das Problem.

<?php

function fixeLaenge(string $wert, int $n): string
{
return substr(str_pad($wert, $n), 0, $n);
}

echo '|' . fixeLaenge('PHP', 10) . '|' . "\n";
/* |PHP | */

echo '|' . fixeLaenge('Sehr langes Feld', 10) . '|' . "\n";
/* |Sehr lange| */

Solche Wrapper sind besonders nützlich beim Erzeugen von Datensätzen mit fixen Spaltenbreiten, etwa für SWIFT-Nachrichten, alte EDI-Formate oder Cobol-Schnittstellen. Wer Multibyte-sicher unterwegs ist, ersetzt substr durch mb_substr und str_pad durch mb_str_pad.

Wie die Funktion intern entscheidet, ob und wo aufgefüllt wird, zeigt das folgende Diagramm im Überblick.


flowchart TD
    A[Eingabe-String] --> B{Laenge < Ziel?}
    B -->|nein| C[String unveraendert]
    B -->|ja| D{Pad-Typ?}
    D -->|LEFT| E[Pad-Zeichen links]
    D -->|RIGHT| F[Pad-Zeichen rechts]
    D -->|BOTH| G[Pad-Zeichen beidseitig]
    E --> H[Aufgefuellter String]
    F --> H
    G --> H

Fazit

Mit PHP str_pad steht ein einfaches und wirkungsvolles Werkzeug für alles bereit, was eine feste Stringlänge braucht. Die drei Konstanten STR_PAD_LEFT, STR_PAD_RIGHT und STR_PAD_BOTH decken Zero-Padding, Spaltenausrichtung und Zentrierung ab. Im Vergleich zu sprintf bleibt PHP str_pad die richtige Wahl, sobald beliebige Pad-Zeichen oder reine Padding-Aufgaben im Vordergrund stehen. Wer mit Umlauten oder Emoji arbeitet, wechselt seit PHP 8.3 auf mb_str_pad() und sichert damit eine optisch korrekte Ausgabe. Damit gehört PHP str_pad zum festen Repertoire jeder Konsolen-Anwendung, jedes Reports und jeder Schnittstelle mit fester Datensatzbreite.

 

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.