W3docs

substr_replace()

La funzione substr_replace() in PHP sostituisce una parte di una stringa con un'altra stringa in base alla posizione numerica.

Introduzione

La funzione substr_replace() sostituisce una parte di una stringa con un'altra stringa, basandosi su una posizione numerica anziché su un pattern di ricerca. Si indica dove iniziare e quanti caratteri sovrascrivere, e la funzione inserisce il testo sostitutivo al posto indicato. Questo la rende ideale per modifiche in posizioni fisse — mascherare le cifre di una carta di credito, sostituire una porzione di una data o inserire testo a un offset noto.

Questa funzione è diversa da str_replace(), che trova e sostituisce cercando una sottostringa. Usa substr_replace() quando conosci la posizione; usa str_replace() quando conosci il valore.

Sintassi

substr_replace(
    array|string $string,
    array|string $replace,
    array|int $offset,
    array|int|null $length = null
): string|array
ParametroDescrizione
$stringLa stringa di input (o un array di stringhe — vedi Utilizzo con array).
$replaceLa stringa sostitutiva inserita a partire da $offset.
$offsetIl punto di inizio della sostituzione. Un valore negativo conta dalla fine della stringa.
$lengthQuanti caratteri sovrascrivere. Omettilo (o passa null) per sostituire fino alla fine della stringa. Un valore negativo si ferma a quel numero di caratteri prima della fine. 0 inserisce senza eliminare nulla.

La funzione restituisce la stringa risultante. Non modifica $string in-place — devi catturare il valore restituito.

Esempio base

php— editable, runs on the server

A partire dall'indice 7 (w), vengono rimossi cinque caratteri e al loro posto viene inserito "universe".

Inserimento senza eliminazione

Passa 0 come lunghezza e non viene rimosso nulla — il testo sostitutivo viene semplicemente inserito prima dell'offset.

<?php

echo substr_replace("Hello", "ABC", 2, 0); // HeABCllo

Sostituzione da un offset negativo

Un $offset negativo conta all'indietro dalla fine della stringa, il che è utile quando non si conosce in anticipo la lunghezza.

<?php

echo substr_replace("Hello", "X", -1);     // HellX  (replace the last character)
echo "\n";
echo substr_replace("12345", "X", 1, -1);  // 1X5    (replace from index 1 to 1-before-the-end)

Esempio pratico: mascherare le cifre

Sovrascrivere una porzione nota con lo stesso numero di caratteri * è un uso comune nella pratica — ad esempio, per nascondere parte di un numero di carta.

<?php

$card = "4111111111111111";
echo substr_replace($card, "********", 4, 8); // 4111********1111

Utilizzo con array

Se passi un array di stringhe, substr_replace() applica la sostituzione a ogni elemento e restituisce un nuovo array. Puoi anche passare array per $replace, $offset e $length per usare valori diversi per ogni elemento.

<?php

$names = ["Alice", "Bob", "Carol"];
$result = substr_replace($names, "***", 1, 2);
print_r($result);
// Array
// (
//     [0] => A***ce
//     [1] => B***
//     [2] => C***ol
// )

Errori comuni

  • Restituisce una nuova stringa. substr_replace($s, ...) da solo non produce nulla di visibile — assegna o stampa il risultato.
  • Gli offset sono posizioni in byte, non in caratteri. Per testo multibyte (UTF-8) non esiste mb_substr_replace; calcola gli offset con attenzione o ricostruisci la stringa con mb_substr().
  • Un offset oltre la fine della stringa aggiunge il testo sostitutivo in coda anziché sovrascrivere.

Funzioni correlate

  • str_replace() — sostituzione per valore anziché per posizione.
  • substr() — estrae una porzione di una stringa.
  • strpos() — trova la posizione da passare a substr_replace().
  • str_pad() — aggiunge padding a una stringa fino a una lunghezza data.

Conclusione

substr_replace() è il corrispettivo basato sulla posizione di str_replace(). Una volta ricordato che offset e lunghezza descrivono una porzione — e che una lunghezza pari a 0 inserisce mentre un offset negativo conta dalla fine — diventa uno strumento preciso per mascherare, unire ed editare stringhe a posizioni note.

Esercizio

Pratica
Qual è il risultato della funzione substr_replace() in PHP?
Qual è il risultato della funzione substr_replace() in PHP?
Was this page helpful?