W3docs

chunk_split()

A função chunk_split() divide uma string em partes menores e insere um separador após cada parte. Veja a sintaxe e exemplos práticos.

A função chunk_split() do PHP divide uma string em uma série de partes de comprimento igual e insere um separador após cada parte. Ela não divide a string em um array — ela retorna uma única string nova com os separadores já incorporados. O caso de uso clássico é envolver dados longos e ininterruptos (como conteúdo codificado em Base64) em linhas de largura fixa para transmissão por e-mail/MIME.

Este capítulo aborda a sintaxe, todos os parâmetros, exemplos executáveis e os pontos de atenção que costumam causar confusão.

Sintaxe

chunk_split(string $string, int $length = 76, string $separator = "\r\n"): string
ParâmetroObrigatórioPadrãoDescrição
$stringSimA string a ser dividida em partes.
$lengthNão76O comprimento de cada parte, em bytes. Deve ser 1 ou maior.
$separatorNão"\r\n"A string inserida após cada parte.

A função retorna a nova string. O separador é acrescentado após cada parte — incluindo a última — portanto o resultado sempre termina com um separador no final.

Os padrões são intencionais: 76 caracteres com terminação de linha \r\n (CRLF) é exatamente o que o RFC 2045 recomenda para corpos de mensagens codificadas em MIME.

Exemplo básico

Divida uma string em partes de 20 caracteres usando o separador padrão \r\n:

php— editable, runs on the server

A cada 20 caracteres, chunk_split() insere um retorno de carro + avanço de linha (\r\n). Em um terminal, o \r\n aparece como uma quebra de linha, portanto a saída tem este aspecto:

Lorem ipsum dolor si
t amet, consectetur 
adipiscing elit. Nul
la at nulla justo, e
get luctus tortor. M
aecenas vel est at m
assa aliquam semper.

Observe que cada linha visível contém exatamente 20 caracteres da string original — a função conta caracteres, não palavras, portanto pode dividir palavras ao meio. Se você precisar de quebra de linha respeitando palavras, use wordwrap().

Usando um separador personalizado

O terceiro parâmetro permite escolher o que inserir após cada parte. Aqui usamos uma única quebra de linha ("\n") em vez do \r\n padrão:

php— editable, runs on the server

A saída:

Lorem ipsum dolor si
t amet, consectetur 
adipiscing elit. Nul
la at nulla justo, e
get luctus tortor. M
aecenas vel est at m
assa aliquam semper.

O separador pode ser qualquer string, não apenas uma quebra de linha. Com chunk_split("abcdefghij", 4, "-") você obtém abcd-efgh-ij- — observe o - final após a última parte, que é mais curta.

Caso de uso real: envolvendo dados Base64

O motivo pelo qual chunk_split() existe é o e-mail. A saída Base64 é uma longa linha ininterrupta, mas os corpos MIME devem ser quebrados em 76 caracteres. Combinar base64_encode() com chunk_split() produz um texto pronto para transmissão:

<?php
$data = "Hello World, this is a longer string to demonstrate chunk_split for MIME like wrapping of base64 data.";
$encoded = base64_encode($data);
echo chunk_split($encoded, 76, "\n");
?>

Isso divide a string Base64 em linhas de 76 caracteres:

SGVsbG8gV29ybGQsIHRoaXMgaXMgYSBsb25nZXIgc3RyaW5nIHRvIGRlbW9uc3RyYXRlIGNodW5r
X3NwbGl0IGZvciBNSU1FIGxpa2Ugd3JhcHBpbmcgb2YgYmFzZTY0IGRhdGEu

Pontos de atenção

  • Separador no final. chunk_split() sempre acrescenta o separador após a última parte também. Se você não quiser isso, remova-o: rtrim(chunk_split($s, 20), "\r\n").
  • Retorna uma string, não um array. Para dividir uma string em um array de partes de comprimento fixo, use str_split(). Para dividir por um delimitador, use explode().
  • O comprimento é medido em bytes. Com texto multibyte (UTF-8), uma parte pode cair no meio de um caractere multibyte e corrompê-lo. chunk_split() é segura apenas para dados de byte único, como ASCII ou Base64.
  • $length deve ser positivo. Passar 0 dispara um ValueError (PHP 8+) ou um aviso e false em versões mais antigas.

Funções relacionadas

  • wordwrap() — quebra uma string em uma largura definida nos limites de palavras.
  • str_split() — divide uma string em um array de partes de comprimento igual.
  • explode() — divide uma string em um array usando um delimitador.
  • nl2br() — insere quebras de linha HTML antes de novas linhas.

Prática

Prática
Qual das descrições a seguir oferece informações corretas sobre a função chunk_split() em PHP?
Qual das descrições a seguir oferece informações corretas sobre a função chunk_split() em PHP?
Was this page helpful?