W3docs

str_split()

Artigo sobre a função PHP str_split(), usada para dividir uma string em um array, com sintaxe, parâmetros e exemplos práticos.

A função PHP str_split() divide uma string em um array de partes menores. Por padrão, cada parte é um único caractere, mas você pode solicitar fragmentos de tamanho fixo. É a função ideal quando você precisa iterar sobre uma string caractere por caractere ou processá-la em blocos de tamanho igual.

Esta página cobre a sintaxe, o parâmetro de comprimento do fragmento, o valor retornado e o problema com strings multibyte que costuma surpreender a maioria dos desenvolvedores.

Sintaxe

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

A função aceita dois parâmetros:

  • $string — a string a ser dividida. Obrigatório.
  • $length — o comprimento de cada fragmento, em bytes. Opcional; padrão é 1. Deve ser 1 ou maior (um valor menor que 1 gera um ValueError no PHP 8.0+).

Ela retorna um array de fragmentos de string. Se $string estiver vazia, o resultado será um array vazio ([]) no PHP 8.2 e versões posteriores. O último fragmento pode ser menor que $length quando o comprimento da string não é um múltiplo exato dele.

Dividindo em caracteres individuais

Sem o segundo argumento, str_split() retorna um elemento do array por caractere. Isso é útil para percorrer cada caractere ou contar caracteres por categoria.

php— editable, runs on the server

A saída é um array onde cada caractere tem seu próprio índice:

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

Dividindo em fragmentos de tamanho fixo

Passe um $length para agrupar os caracteres em fragmentos desse tamanho. Isso é útil para formatar strings, como dividir um número de cartão em grupos, ou processar dados binários em blocos fixos.

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

A string tem 13 caracteres, portanto é dividida em quatro fragmentos de 3 mais um fragmento final de 1:

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

Atenção com strings multibyte

str_split() opera sobre bytes, não caracteres. Para texto ASCII, um byte equivale a um caractere, portanto o comportamento padrão parece uma divisão por caracteres. Mas caracteres UTF-8 como é ou emojis ocupam múltiplos bytes, e str_split() irá quebrá-los, produzindo fragmentos inválidos:

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

O é foi dividido em dois bytes corrompidos. Quando você precisa dividir uma string UTF-8 por caracteres reais, use mb_str_split() — ela é compatível com multibyte e mantém cada caractere intacto.

Quando usar str_split() vs. explode()

Use str_split() quando quiser dividir uma string em uma posição ou comprimento fixo — cada caractere individualmente ou a cada N bytes. Use explode() quando quiser dividir por um delimitador, como uma vírgula ou um espaço. Para reconstruir uma string a partir de um array, veja implode(), e para dividir com uma expressão regular, veja preg_split().

Prática

Prática
O que faz a função PHP 'str_split()'?
O que faz a função PHP 'str_split()'?
Was this page helpful?