substr_replace în PHP

Înlocuiește o porțiune dintr-un text, aleasă după poziție și lungime.

Sintaxă
substr_replace(array|string $string, array|string $replace, array|int $offset, array|int|null $length = null): array|string

Ce face substr_replace

Spre deosebire de str_replace, care caută un text, substr_replace înlocuiește ce se află la o anumită poziție. Pozițiile încep de la 0, iar valorile negative se numără de la final.

Cu $length = 0 nu se șterge nimic, deci textul nou este doar inserat. Fără $length, se înlocuiește tot până la final.

Parametri

Parametru Descriere
$string Textul original (sau un tablou de texte).
$replace Textul pus în loc.
$offset Poziția de la care începe înlocuirea.
$length Opțional. Câte caractere se înlocuiesc. 0 înseamnă inserare.

Ce returnează

Textul nou (sau tabloul de texte noi).

Exemple

Exemplul 1: Ascunderea unui număr de card

<?php
$card = "4111222233334444";

echo substr_replace($card, str_repeat("*", 12), 0, -4);

Rezultat

************4444

Exemplul 2: Inserare și înlocuire până la final

<?php
echo substr_replace("0742123456", " ", 4, 0) . "\n";
echo substr_replace("raport_2025.pdf", "2026.pdf", 7);

Rezultat

0742 123456
raport_2026.pdf

Greșeli frecvente

  • Confunzi substr_replace cu str_replace. Al treilea parametru este o poziție (număr), nu textul căutat.
  • Lucrezi pe texte cu diacritice și pozițiile nu se potrivesc. Pozițiile sunt în octeți; calculează-le cu strlen/strpos, nu cu mb_strlen.

Comenzi înrudite

  • str_replace: Înlocuiește toate aparițiile unui text cu alt text.
  • substr: Extrage o bucată dintr-un text, pornind de la o anumită poziție.
  • str_repeat: Repetă un text de un anumit număr de ori.