str_pad în PHP

Completează un text până la o anumită lungime, adăugând caractere la dreapta, la stânga sau pe ambele părți.

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

Ce face str_pad

str_pad lungește un text până ajunge la lungimea dorită. Implicit adaugă spații la dreapta. Cu STR_PAD_LEFT adaugă la stânga, iar cu STR_PAD_BOTH împarte completarea între cele două părți.

Este folosită des pentru numere cu zerouri în față (0042) și pentru coloane aliniate în text simplu. Dacă textul este deja mai lung decât $length, este returnat neschimbat, nu tăiat.

Lungimea se măsoară în octeți. Pentru texte cu diacritice folosește mb_str_pad (PHP 8.3+).

Parametri

Parametru Descriere
$string Textul de completat.
$length Lungimea finală dorită (totală, nu câte caractere se adaugă).
$pad_string Opțional. Caracterele folosite la completare. Implicit un spațiu. Nu poate fi text gol.
$pad_type Opțional. STR_PAD_RIGHT (implicit), STR_PAD_LEFT sau STR_PAD_BOTH.

Ce returnează

Textul completat.

Exemple

Exemplul 1: Numere de factură cu zerouri în față

<?php
foreach ([7, 42, 1024] as $numar) {
    echo "Factura nr. " . str_pad($numar, 5, "0", STR_PAD_LEFT) . "\n";
}

Rezultat

Factura nr. 00007
Factura nr. 00042
Factura nr. 01024

Exemplul 2: Coloane aliniate în text simplu

Numele produselor sunt completate cu puncte până la 12 caractere, iar prețurile cu spații la stânga, ca să fie aliniate la dreapta. Observă că „Pâine” primește un punct mai puțin: litera „â” ocupă 2 octeți.

<?php
$produse = ["Pâine" => 5, "Lapte" => 8.5, "Cafea" => 32];

foreach ($produse as $nume => $pret) {
    echo str_pad($nume, 12, ".") . str_pad($pret, 6, " ", STR_PAD_LEFT) . " lei\n";
}

Rezultat

Pâine......     5 lei
Lapte.......   8.5 lei
Cafea.......    32 lei

Exemplul 3: Completare pe ambele părți

<?php
echo str_pad("MENIU", 15, "*", STR_PAD_BOTH);

Rezultat

*****MENIU*****

Greșeli frecvente

  • Crezi că $length înseamnă câte caractere se adaugă. Este lungimea totală a rezultatului: str_pad("7", 3, "0", STR_PAD_LEFT) dă 007.
  • Completezi texte cu diacritice și coloanele ies strâmbe. str_pad numără octeți: „Pâine” are 6 octeți, nu 5. Folosește mb_str_pad.

Comenzi înrudite

  • mb_str_pad: Completează un text până la o lungime dată, numărând corect caracterele cu diacritice.
  • sprintf: Construiește un text formatat după un șablon și îl returnează, fără să îl afișeze.
  • str_repeat: Repetă un text de un anumit număr de ori.