W3docs

chunk_split()

La fonction chunk_split() divise une chaîne en morceaux de taille égale et insère un séparateur après chaque morceau.

La fonction PHP chunk_split() découpe une chaîne en une série de morceaux de longueur égale et insère un séparateur après chaque morceau. Elle ne décompose pas la chaîne en array — elle retourne une nouvelle chaîne unique avec les séparateurs intégrés. Le cas d'usage classique est d'envelopper des données longues et ininterrompues (comme du contenu encodé en Base64) en lignes de largeur fixe pour la transmission par e-mail/MIME.

Ce chapitre couvre la syntaxe, chaque paramètre, des exemples exécutables et les pièges qui surprennent souvent les développeurs.

Syntaxe

chunk_split(string $string, int $length = 76, string $separator = "\r\n"): string
ParamètreRequisDéfautDescription
$stringOuiLa chaîne à découper.
$lengthNon76La longueur de chaque morceau, en octets. Doit être 1 ou supérieur.
$separatorNon"\r\n"La chaîne insérée après chaque morceau.

La fonction retourne la nouvelle chaîne. Le séparateur est ajouté après chaque morceau — y compris le dernier — donc le résultat se termine toujours par un séparateur final.

Les valeurs par défaut sont intentionnelles : 76 caractères avec un saut de ligne \r\n (CRLF) correspond exactement à ce que recommande RFC 2045 pour les corps de messages encodés en MIME.

Exemple de base

Diviser une chaîne en morceaux de 20 caractères en utilisant le séparateur \r\n par défaut :

php— editable, runs on the server

Toutes les 20 caractères, chunk_split() insère un retour chariot + saut de ligne (\r\n). Dans un terminal, le \r\n apparaît comme un saut de ligne, donc la sortie ressemble à ceci :

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.

Notez que chaque ligne visible contient exactement 20 caractères de la chaîne d'origine — la fonction compte les caractères, pas les mots, elle peut donc couper les mots en plein milieu. Si vous avez besoin d'un renvoi à la ligne tenant compte des mots, utilisez wordwrap().

Utiliser un séparateur personnalisé

Le troisième paramètre vous permet de choisir ce qui est inséré après chaque morceau. Ici nous utilisons un simple saut de ligne ("\n") à la place du \r\n par défaut :

php— editable, runs on the server

La sortie :

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.

Le séparateur peut être n'importe quelle chaîne, pas seulement un saut de ligne. Avec chunk_split("abcdefghij", 4, "-") vous obtenez abcd-efgh-ij- — remarquez le - final après le dernier morceau, plus court.

Cas d'usage réel : envelopper des données Base64

La raison d'être de chunk_split() est l'e-mail. La sortie Base64 est une longue ligne ininterrompue, mais les corps MIME doivent être coupés à 76 caractères. Combiner base64_encode() avec chunk_split() produit un texte prêt à la transmission :

<?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");
?>

Cela découpe la chaîne Base64 en lignes de 76 caractères :

SGVsbG8gV29ybGQsIHRoaXMgaXMgYSBsb25nZXIgc3RyaW5nIHRvIGRlbW9uc3RyYXRlIGNodW5r
X3NwbGl0IGZvciBNSU1FIGxpa2Ugd3JhcHBpbmcgb2YgYmFzZTY0IGRhdGEu

Points de vigilance

  • Séparateur final. chunk_split() ajoute toujours le séparateur après le dernier morceau également. Si vous ne le souhaitez pas, supprimez-le avec : rtrim(chunk_split($s, 20), "\r\n").
  • Elle retourne une chaîne, pas un array. Pour diviser une chaîne en array de morceaux de longueur fixe, utilisez str_split(). Pour diviser sur un délimiteur, utilisez explode().
  • La longueur est mesurée en octets. Avec du texte multioctet (UTF-8), un morceau peut tomber au milieu d'un caractère multioctet et le corrompre. chunk_split() est sûre en termes d'octets uniquement pour les données à un seul octet comme l'ASCII ou le Base64.
  • $length doit être positif. Passer 0 déclenche une ValueError (PHP 8+) ou un avertissement et false dans les versions antérieures.

Fonctions associées

  • wordwrap() — envelopper une chaîne à une largeur donnée en respectant les limites des mots.
  • str_split() — diviser une chaîne en array de morceaux de longueur égale.
  • explode() — diviser une chaîne en array à l'aide d'un délimiteur.
  • nl2br() — insérer des sauts de ligne HTML avant les retours à la ligne.

Pratique

Pratique
Laquelle des descriptions suivantes donne des informations correctes sur la fonction chunk_split() en PHP ?
Laquelle des descriptions suivantes donne des informations correctes sur la fonction chunk_split() en PHP ?
Was this page helpful?