W3docs

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ètreRequisDescription
$separatorouiLa chaîne délimitante sur laquelle effectuer la division. Elle est interprétée littéralement, pas comme une expression régulière.
$stringouiLa chaîne d'entrée à diviser.
$limitnonContrô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

php— editable, runs on the server

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

php— editable, runs on the server

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: 21

Piè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), utilisez preg_split() à la place.
  • Impossible de diviser en caractères individuels avec explode(). Un délimiteur vide lève une ValueError. Pour diviser une chaîne en caractères individuels, utilisez str_split().
  • Plusieurs délimiteurs adjacents créent des éléments vides. explode(",", "a,,b") retourne ["a", "", "b"]. Filtrez-les avec array_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.

Pratique

Pratique
Quelle est la fonctionnalité de la fonction 'explode' en PHP ?
Quelle est la fonctionnalité de la fonction 'explode' en PHP ?
Was this page helpful?