explode()
La fonction explode() divise une chaîne en un tableau de sous-chaînes selon un délimiteur choisi. Syntaxe et exemples pratiques.
La fonction explode() divise une chaîne en un tableau de sous-chaînes, en la découpant à chaque occurrence d'un délimiteur choisi. C'est la méthode standard en PHP pour transformer du texte délimité — une ligne CSV, une date, une liste de tags séparés par des virgules — en données itérables. Elle est l'inverse de implode(), qui réunit un tableau en une chaîne.
Cette page couvre la syntaxe, le paramètre optionnel $limit (y compris les valeurs négatives), la valeur de retour, les cas d'usage courants et les pièges à éviter.
Syntaxe
explode(string $separator, string $string, int $limit = PHP_INT_MAX): array| Paramètre | Requis | Description |
|---|---|---|
$separator | oui | La chaîne délimitante sur laquelle effectuer la division. Elle est interprétée littéralement, pas comme une expression régulière. |
$string | oui | La chaîne d'entrée à diviser. |
$limit | non | Contrôle le nombre de morceaux retournés (voir ci-dessous). Vaut PHP_INT_MAX par défaut. |
La fonction retourne un tableau de chaînes. Si $separator est une chaîne vide (""), explode() lève une ValueError (en PHP 8+ ; dans les versions antérieures, elle retournait false). Si le délimiteur n'apparaît pas dans la chaîne, le résultat est un tableau à un seul élément contenant la chaîne d'origine entière.
Exemple de base
On définit le délimiteur ,, on appelle explode(), puis on affiche le tableau résultant avec print_r(). Chaque élément correspond à tout ce qui se trouve entre deux délimiteurs.
Le résultat de ce code sera :
Array
(
[0] => Hello
[1] => World!
)Limiter le nombre de morceaux
Le paramètre optionnel $limit modifie la façon dont la chaîne est découpée :
- Limite positive — le tableau contient au plus ce nombre d'éléments ; le dernier élément contient le reste non découpé de la chaîne.
- Zéro — traité comme
1, donc la chaîne entière est retournée en tant qu'élément unique. - Limite négative — tous les morceaux sont retournés sauf les derniers
|limit|.
Limite positive
Avec une limite de 3, la chaîne est divisée en au plus trois éléments. Notez que le dernier élément conserve le reste de la chaîne non découpé — three,four,five — plutôt que d'être supprimé.
Le résultat de ce code sera :
Array
(
[0] => one
[1] => two
[2] => three,four,five
)C'est pratique quand on ne s'intéresse qu'aux premiers champs, par exemple explode(' ', $logLine, 2) pour séparer un horodatage du reste d'un message de journal.
Limite négative
Une limite négative supprime des éléments depuis la fin du résultat :
<?php
$string = "one,two,three,four,five";
print_r(explode(",", $string, -2));
?>Les deux derniers morceaux (four et five) sont supprimés :
Array
(
[0] => one
[1] => two
[2] => three
)Cas d'usage courants
Un usage typique consiste à lire un enregistrement délimité et à supprimer les espaces de chaque champ :
<?php
$csvRow = "Jane , Doe , [email protected] ";
$fields = array_map('trim', explode(",", $csvRow));
print_r($fields);
?>Le résultat est propre, sans espaces superflus :
Array
(
[0] => Jane
[1] => Doe
[2] => [email protected]
)explode() s'associe également naturellement à la déstructuration list() pour extraire des parties nommées d'une chaîne :
<?php
$date = "2026-06-21";
[$year, $month, $day] = explode("-", $date);
echo "Year: $year, Month: $month, Day: $day";
?>Résultat :
Year: 2026, Month: 06, Day: 21Pièges à éviter
- Le délimiteur est littéral, pas une regex.
explode("-", ...)divise sur un tiret, jamais sur un motif. Si vous avez besoin d'une expression régulière (par exemple, diviser sur n'importe quelle séquence d'espaces), utilisezpreg_split()à la place. - Impossible de diviser en caractères individuels avec
explode(). Un délimiteur vide lève uneValueError. Pour diviser une chaîne en caractères individuels, utilisezstr_split(). - Plusieurs délimiteurs adjacents créent des éléments vides.
explode(",", "a,,b")retourne["a", "", "b"]. Filtrez-les avecarray_filter()si vous ne les souhaitez pas. - Délimiteur introuvable ? Vous obtenez quand même un tableau valide — un tableau à un seul élément contenant toute la chaîne — vous pouvez donc accéder à
[0]en toute sécurité.
Fonctions associées
implode()/join()— l'inverse : réunit un tableau en une chaîne.str_split()— divise une chaîne en morceaux de longueur fixe (ou en caractères).preg_split()— divise à l'aide d'une expression régulière.substr()— extrait une partie d'une chaîne par position.trim()— nettoie les espaces de chaque morceau après la division.