W3docs

str_split()

Articolo sulla funzione PHP str_split(), usata per suddividere una stringa in un array. Sintassi, parametri e casi d'uso con esempi pratici.

La funzione PHP str_split() suddivide una stringa in un array di parti più piccole. Per impostazione predefinita ogni parte è un singolo carattere, ma è possibile richiedere blocchi di lunghezza fissa. È la funzione ideale quando si desidera iterare su una stringa carattere per carattere o elaborarla in blocchi di dimensioni uguali.

Questa pagina illustra la sintassi, il parametro per la lunghezza dei blocchi, il valore restituito e il problema con le stringhe multibyte che mette in difficoltà la maggior parte degli sviluppatori.

Sintassi

str_split(string $string, int $length = 1): array

La funzione accetta due parametri:

  • $string — la stringa da suddividere. Obbligatorio.
  • $length — la lunghezza di ciascun blocco, in byte. Facoltativo; il valore predefinito è 1. Deve essere 1 o maggiore (un valore inferiore a 1 genera un ValueError in PHP 8.0+).

Restituisce un array di blocchi di stringa. Se $string è vuota, il risultato è un array vuoto ([]) in PHP 8.2 e versioni successive. L'ultimo blocco può essere più corto di $length quando la lunghezza della stringa non è un multiplo esatto di esso.

Suddivisione in singoli caratteri

Senza il secondo argomento, str_split() restituisce un elemento dell'array per ogni carattere. Questo è utile per iterare su ogni carattere o contare i caratteri per categoria.

php— editable, runs on the server

L'output è un array in cui ogni carattere ha il proprio indice:

Array
(
    [0] => H
    [1] => e
    [2] => l
    [3] => l
    [4] => o
    [5] => ,
    [6] =>  
    [7] => W
    [8] => o
    [9] => r
    [10] => l
    [11] => d
    [12] => !
)

Suddivisione in blocchi di lunghezza fissa

Passare un $length raggruppa i caratteri in blocchi di quella dimensione. Questo è utile per formattare stringhe, ad esempio suddividere un numero di carta in gruppi, o elaborare dati binari in blocchi fissi.

<?php
$string = "Hello, World!";
$chunks = str_split($string, 3);
print_r($chunks);
?>

La stringa ha 13 caratteri, quindi viene suddivisa in quattro blocchi da 3 più un blocco finale da 1:

Array
(
    [0] => Hel
    [1] => lo,
    [2] =>  Wo
    [3] => rld
    [4] => !
)

Attenzione alle stringhe multibyte

str_split() opera sui byte, non sui caratteri. Per il testo ASCII un byte corrisponde a un carattere, quindi il comportamento predefinito sembra una suddivisione per carattere. Ma i caratteri UTF-8 come é o le emoji occupano più byte, e str_split() li spezzerà, producendo frammenti non validi:

<?php
print_r(str_split("héllo"));
?>
Array
(
    [0] => h
    [1] => Ã
    [2] => ©
    [3] => l
    [4] => l
    [5] => o
)

La é è stata restituita come due byte corrotti. Quando è necessario suddividere una stringa UTF-8 per caratteri reali, utilizzare invece mb_str_split() — è consapevole del multibyte e mantiene integro ogni carattere.

Quando usare str_split() invece di explode()

Usa str_split() quando vuoi suddividere una stringa in una posizione o lunghezza fissa — ogni singolo carattere o ogni N byte. Usa explode() quando vuoi suddividere in base a un delimitatore come una virgola o uno spazio. Per ricostruire una stringa da un array, vedi implode(), e per suddividere con un'espressione regolare, vedi preg_split().

Esercitazione

Pratica
Cosa fa la funzione 'str_split()' di PHP?
Cosa fa la funzione 'str_split()' di PHP?
Was this page helpful?