W3docs

explode()

La funzione explode() divide una string in un array di sottostringhe. Ecco la sintassi della funzione explode() in PHP.

La funzione explode() divide una string in un array di sottostringhe, separandola in corrispondenza di ogni delimitatore scelto. È il metodo standard in PHP per trasformare testo delimitato — una riga CSV, una data, un elenco di tag separati da virgole — in dati su cui iterare. È l'inverso di implode(), che unisce un array in una string.

Questa pagina tratta la sintassi, il parametro opzionale $limit (inclusi i valori negativi), il valore restituito, i modelli di parsing più comuni e gli errori tipici in cui è facile incappare.

Sintassi

explode(string $separator, string $string, int $limit = PHP_INT_MAX): array
ParametroObbligatorioDescrizione
$separatorLa string delimitatrice su cui effettuare la divisione. Viene confrontata letteralmente, non come espressione regolare.
$stringLa string di input da dividere.
$limitnoControlla quanti elementi vengono restituiti (vedi sotto). Il valore predefinito è PHP_INT_MAX.

La funzione restituisce un array di stringhe. Se $separator è una string vuota (""), explode() genera un ValueError (in PHP 8+; nelle versioni precedenti restituiva false). Se il separatore non compare mai nella string, il risultato è un array con un solo elemento contenente l'intera string originale.

Esempio base

php— editable, runs on the server

Definiamo il delimitatore ,, chiamiamo explode() e stampiamo l'array risultante con print_r(). Ogni elemento contiene tutto ciò che si trova tra due delimitatori.

L'output di questo codice sarà:

Array
(
    [0] => Hello
    [1] => World!
)

Limitare il numero di elementi

Il parametro opzionale $limit cambia il modo in cui la string viene suddivisa:

  • Limite positivo — l'array contiene al massimo quel numero di elementi; l'ultimo elemento contiene il resto non diviso della string.
  • Zero — trattato come 1, quindi l'intera string viene restituita come un unico elemento.
  • Limite negativo — vengono restituiti tutti gli elementi tranne gli ultimi |limit|.

Limite positivo

php— editable, runs on the server

Con un limite di 3, la string viene divisa in al massimo tre elementi. Si noti che l'ultimo elemento conserva il resto della string non suddivisa — three,four,five — invece di essere scartato.

L'output di questo codice sarà:

Array
(
    [0] => one
    [1] => two
    [2] => three,four,five
)

Questo è utile quando si è interessati solo ai primi campi, ad esempio explode(' ', $logLine, 2) per separare un timestamp dal resto di un messaggio di log.

Limite negativo

Un limite negativo rimuove elementi dalla fine del risultato:

<?php
$string = "one,two,three,four,five";
print_r(explode(",", $string, -2));
?>

Gli ultimi due elementi (four e five) vengono rimossi:

Array
(
    [0] => one
    [1] => two
    [2] => three
)

Modelli di parsing comuni

Un uso pratico tipico è leggere un record delimitato e applicare il trim a ciascun campo:

<?php
$csvRow = "Jane , Doe ,  [email protected] ";
$fields = array_map('trim', explode(",", $csvRow));
print_r($fields);
?>

L'output produce valori puliti, senza spazi superflui:

Array
(
    [0] => Jane
    [1] => Doe
    [2] => [email protected]
)

explode() si combina naturalmente anche con la destrutturazione tramite list() per estrarre parti con nome da una string:

<?php
$date = "2026-06-21";
[$year, $month, $day] = explode("-", $date);
echo "Year: $year, Month: $month, Day: $day";
?>

Output:

Year: 2026, Month: 06, Day: 21

Errori comuni

  • Il separatore è letterale, non una regex. explode("-", ...) divide in corrispondenza di un trattino, mai in base a un pattern. Se si ha bisogno di un'espressione regolare (ad esempio per dividere su qualsiasi sequenza di spazi bianchi), usare preg_split().
  • Non è possibile dividere in singoli caratteri con explode(). Un separatore vuoto genera un ValueError. Per dividere una string in singoli caratteri, usare str_split().
  • Più delimitatori adiacenti creano elementi vuoti. explode(",", "a,,b") restituisce ["a", "", "b"]. È possibile filtrarli con array_filter() se non si desidera tenerli.
  • Separatore non trovato? Si ottiene comunque un array valido — un array con un solo elemento contenente l'intera string — quindi è possibile accedere all'indice [0] in modo sicuro.

Funzioni correlate

  • implode() / join() — l'operazione inversa: unisce un array in una string.
  • str_split() — divide una string in segmenti di lunghezza fissa (o in singoli caratteri).
  • preg_split() — divide usando un'espressione regolare.
  • substr() — estrae una parte di una string per posizione.
  • trim() — rimuove gli spazi bianchi da ciascun elemento dopo l'operazione di explode.

Esercitazione

Pratica
Qual è la funzionalità della funzione 'explode' in PHP?
Qual è la funzionalità della funzione 'explode' in PHP?
Was this page helpful?