str_replace()
Articolo sulla funzione PHP str_replace(), usata per sostituire tutte le occorrenze di una stringa all'interno di un'altra stringa.
La funzione PHP str_replace() sostituisce tutte le occorrenze di una stringa di ricerca con una stringa di sostituzione. È utile per trovare e sostituire specifici pattern all'interno di testi più lunghi. Di seguito vengono illustrati la sintassi, le caratteristiche principali e alcuni esempi d'uso.
La funzione str_replace() viene utilizzata per sostituire tutte le occorrenze di una stringa all'interno di un'altra stringa. La sintassi della funzione str_replace() è la seguente:
Sintassi PHP di str_replace()
str_replace($search, $replace, $subject, $count = null)La funzione accetta tre parametri obbligatori e uno opzionale: $search, $replace, $subject e $count.
$search: La stringa, o array di stringhe, da cercare.$replace: La stringa, o array di stringhe, con cui sostituire.$subject: La stringa, o array di stringhe, in cui effettuare la ricerca.$count(opzionale): Una variabile passata per riferimento che viene popolata con il numero di sostituzioni effettuate.
La funzione restituisce il $subject modificato. La stringa originale non viene mai modificata direttamente, quindi è necessario acquisire il valore restituito. str_replace() è case-sensitive — "World" e "world" sono trattate come stringhe diverse. Se si desidera ignorare le maiuscole/minuscole, utilizzare str_ireplace().
Un esempio di base
Ecco il modo più semplice per utilizzare la funzione str_replace() — sostituire una parola con un'altra:
Esempio di PHP str_replace()
In questo esempio, la variabile stringa $string contiene la frase "The quick brown fox jumps over the lazy dog." Sostituiamo la parola "brown" con "red" passando "brown" come $search e "red" come $replace. Il risultato è:
The quick red fox jumps over the lazy dog.Ogni occorrenza viene sostituita — non solo la prima. Se la stringa di ricerca comparisse tre volte, tutte e tre verrebbero sostituite con una singola chiamata.
Sostituzione di più stringhe contemporaneamente
Quando $search e $replace sono array, ogni elemento di $search viene sostituito dall'elemento alla stessa posizione in $replace. Il quarto argomento opzionale $count viene passato per riferimento e riceve il numero totale di sostituzioni:
Esempio con array e $count
<?php
$search = ["brown", "fox"];
$replace = ["red", "bear"];
$subject = "The quick brown fox jumps over the lazy dog.";
$count = 0;
$result = str_replace($search, $replace, $subject, $count);
echo $result; // Output: The quick red bear jumps over the lazy dog.
echo "Replacements made: $count"; // Output: Replacements made: 2
?>Se $replace è una singola stringa ma $search è un array, quella stringa viene utilizzata per tutte le corrispondenze:
<?php
$result = str_replace(["a", "e", "i"], "*", "education");
echo $result; // Output: *duc*t*on
?>Un'insidia: le sostituzioni si concatenano
Le sostituzioni degli array vengono applicate nell'ordine specificato e ciascuna opera sul risultato della precedente. Questo significa che un valore appena inserito può essere nuovamente trovato da un termine di ricerca successivo:
<?php
$count = 0;
$result = str_replace(["A", "B"], ["B", "C"], "A", $count);
echo $result; // Output: C
echo "\n";
echo "Replacements: $count"; // Output: Replacements: 2
?>Qui "A" diventa "B" nel primo passaggio, poi quel "B" diventa "C" nel secondo passaggio — quindi il risultato finale è "C", con due sostituzioni conteggiate. Ordina le coppie ricerca/sostituzione con attenzione per evitare questo comportamento, oppure usa strtr() quando hai bisogno che ogni coppia venga applicata esattamente una volta.
Quando usare str_replace()
- Usa
str_replace()per ricerche e sostituzioni letterali veloci quando conosci il testo esatto. - Usa
str_ireplace()quando la corrispondenza deve ignorare le maiuscole/minuscole. - Usa
substr_replace()per sostituire una porzione di stringa in base alla posizione anziché al contenuto. - Usa
preg_replace()quando hai bisogno di pattern matching con espressioni regolari.
La funzione str_replace() offre un modo semplice ed efficiente per cercare e sostituire testo in PHP. Poiché opera su stringhe semplici senza il sovraccarico delle regex, è lo strumento giusto ogni volta che si vuole trovare del testo esatto e letterale.