Menu

PHP str_replace(): sostituire testo in una stringa

str_replace($search, $replace, $subject) sostituisce ogni occorrenza di $search con $replace. Impara gli array di valori da cercare e sostituire, il conteggio delle sostituzioni, str_ireplace che ignora le maiuscole e la sostituzione della sola prima occorrenza.

Questa pagina include editor eseguibili: modifica, esegui e vedi subito l'output.

str_replace($search, $replace, $subject) restituisce una copia di $subject con ogni occorrenza di $search sostituita da $replace. str_replace('world', 'PHP', 'Hello world') restituisce "Hello PHP".

La funzione restituisce la nuova stringa; non modifica la variabile che passi. Assegna il risultato, anche alla stessa variabile: $text = str_replace(...).

Sintassi

str_replace(
    array|string $search,
    array|string $replace,
    string|array $subject,
    int &$count = null
): string|array

Ciascuno dei primi tre argomenti può essere una stringa o un array. Se $subject è un array, la sostituzione viene eseguita su ogni elemento e ottieni un array con le stesse chiavi: str_replace('.txt', '.md', ['a.txt', 'b.txt']) restituisce ['a.md', 'b.md']. La ricerca distingue maiuscole e minuscole e confronta testo semplice, non schemi. Per gli schemi usa preg_replace().

Sostituire più stringhe insieme

Passa degli array per $search e $replace. Il primo valore cercato viene sostituito dalla prima sostituzione, il secondo dalla seconda, e così via. Se $replace è una sola stringa, ogni valore cercato viene sostituito da essa, che è il modo breve per rimuovere un insieme di caratteri.

La trappola dell'ordine e strtr()

Con gli array, str_replace() esegue una sostituzione dopo l'altra sull'intera stringa. Una ricerca successiva può trovare testo appena inserito da una sostituzione precedente. strtr() con un array sostituisce tutto in un solo passaggio, prova prima le chiavi più lunghe e non tocca mai il testo già sostituito.

Usa strtr() per gli scambi e per i segnaposto dei template che potrebbero comparire nei valori.

Contare le sostituzioni

Il quarto argomento viene riempito con il numero di sostituzioni effettuate. Passa una variabile; PHP ci scrive dentro.

Sostituzione senza distinzione tra maiuscole e minuscole con str_ireplace

str_ireplace() accetta gli stessi argomenti e ignora maiuscole e minuscole nella ricerca. La sostituzione viene inserita esattamente come l'hai scritta.

str_ireplace() uniforma solo le lettere ASCII. Per una sostituzione che ignori le maiuscole di lettere accentate o cirilliche, usa preg_replace() con i modificatori i e u.

Sostituire solo la prima occorrenza

str_replace() sostituisce sempre tutto. Per sostituire solo la prima corrispondenza, trovala con strpos() e tagliala con substr_replace():

Per l'ultima occorrenza, usa strrpos() al posto di strpos().

Rimuovere spazi, a capo e altri caratteri

Sostituire con una stringa vuota rimuove il testo. Una pulizia comune rimuove le interruzioni di riga o tutti gli spazi, e l'input giapponese contiene spesso spazi a larghezza piena ( , U+3000) che una normale ricerca di " " non trova.

Metti "\r\n" prima di "\n" e "\r" nell'array, così un a capo di Windows diventa uno spazio e non due.

Domande frequenti

Come sostituisco del testo in una stringa in PHP?

Usa str_replace($search, $replace, $subject): str_replace('cat', 'dog', 'cat and cat') restituisce "dog and dog". Sostituisce ogni occorrenza e restituisce una nuova stringa; l'originale non viene modificato.

str_replace distingue maiuscole e minuscole?

Sì. str_replace('php', 'PHP', 'Php') non cambia nulla. Usa str_ireplace(), che accetta gli stessi argomenti e ignora maiuscole e minuscole.

Come sostituisco solo la prima occorrenza in PHP?

str_replace() non ha un argomento di limite. Trova la posizione con strpos() e usa substr_replace($s, $replace, $pos, strlen($search)), oppure usa preg_replace('/' . preg_quote($search, '/') . '/', $replace, $s, 1).

Come sostituisco più stringhe insieme in PHP?

Passa degli array: str_replace(['a', 'b'], ['1', '2'], $s). Le sostituzioni vengono eseguite in ordine, quindi una ricerca successiva può trovare testo inserito da una precedente. strtr($s, ['a' => '1', 'b' => '2']) sostituisce tutto in un solo passaggio e non risostituisce mai.

str_replace funziona con il testo giapponese?

Sì. str_replace() confronta byte, e un carattere UTF-8 completo non corrisponde mai all'interno di un altro carattere, quindi str_replace('東京', '大阪', $s) è sicuro. Non serve una versione mb_.

Illustrazione dei linguaggi di programmazione di Coddy

Impara a programmare con Coddy

INIZIA