developpeur-bureau-clavier-code-ordinateur
Blog, Tutoriels

PHP Explode : Comment Diviser une Chaîne en Tableau ?

Besoin de transformer une chaîne de caractères en tableau en PHP ? La fonction explode() est faite pour ça.

Ce guide vous montre comment l’utiliser avec des exemples concrets, des cas pratiques et les erreurs à éviter.

Syntaxe et premier exemple d’utilisation

La fonction explode() découpe une chaîne (string) en plusieurs morceaux à partir d’un délimiteur que vous choisissez. Le résultat est un tableau (array) contenant ces morceaux.

Voici la syntaxe officielle de la fonction :

explode(string $separator, string $string, int $limit = PHP_INT_MAX): array

Elle accepte trois paramètres :

  • $separator : Le caractère ou la chaîne qui sert à couper. Par exemple, une virgule, un espace ou un tiret.
  • $string : La chaîne de caractères que vous voulez diviser.
  • $limit : Optionnel. Le nombre maximum d’éléments que le tableau final doit contenir.

Voyons un exemple simple. On va diviser une phrase en utilisant l’espace comme séparateur.

<?php $str = « PHP est un langage populaire »; $array_mots = explode( » « , $str); print_r($array_mots); ?>

Le code ci-dessus affichera ce tableau :

Array ( [0] => PHP [1] => est [2] => un [3] => langage [4] => populaire )

Explication détaillée des paramètres

Pour bien utiliser explode(), il faut comprendre le rôle de chaque paramètre. Surtout le dernier, $limit, qui offre plus de contrôle.

Le séparateur ($separator)

Ce paramètre est requis. C’est le point de repère pour la découpe. Il peut s’agir d’un seul caractère comme une virgule ',' ou d’une chaîne plus longue comme '--'.

Attention, le séparateur est sensible à la casse. Si vous cherchez à diviser avec ‘a’, la fonction ne coupera pas au niveau des ‘A’ majuscules.

La chaîne d’entrée ($string)

Ce paramètre est aussi requis. C’est simplement la chaîne de caractères que vous fournissez à la fonction pour qu’elle la divise.

La limite ($limit)

Ce paramètre est optionnel et contrôle le nombre d’éléments dans le tableau final. Son comportement change selon sa valeur :

  • Si la limite est positive : Le tableau contiendra un maximum de $limit éléments. Si la chaîne peut être découpée plus de fois, le dernier élément du tableau contiendra tout le reste de la chaîne non divisée.
  • Si la limite est négative : Tous les éléments sont retournés, sauf les -$limit derniers. C’est utile pour exclure la fin d’une chaîne.
  • Si la limite est nulle (0) : C’est un cas particulier. Une limite de 0 est traitée comme une limite de 1. Le résultat sera donc un tableau avec un seul élément : la chaîne d’origine.

Exemples pratiques et cas d’usage du paramètre $limit

Maintenant, passons à la pratique. Les exemples de code sont le meilleur moyen de comprendre comment explode() fonctionne dans différentes situations.

Diviser une liste simple (CSV)

Un des usages les plus courants est de traiter des données formatées simplement, comme une liste d’éléments séparés par des virgules.

Imaginons une chaîne contenant des noms de fruits :

<?php $csv_string = « pomme,banane,orange,fraise »; $fruits_array = explode(« , », $csv_string); print_r($fruits_array); ?>

Le résultat est un tableau simple avec chaque fruit comme élément :

Array ( [0] => pomme [1] => banane [2] => orange [3] => fraise )

Utiliser une limite positive

La limite positive est utile quand vous voulez isoler les premiers éléments d’une chaîne et garder le reste intact.

Prenons une chaîne avec plusieurs parties. Nous voulons seulement les deux premières parties, et regrouper le reste.

<?php $str = « one|two|three|four|five »; $array = explode(« | », $str, 3); print_r($array); ?>

Avec une limite de 3, `explode()` crée 3 éléments. Le dernier élément du tableau contient le reste de la chaîne, séparateurs inclus.

Array ( [0] => one [1] => two [2] => three|four|five )

Utiliser une limite négative

La limite négative permet de retirer un certain nombre d’éléments à la fin. C’est pratique pour nettoyer des données dont la fin ne vous intéresse pas.

Avec la même chaîne, si on veut tout sauf les deux derniers éléments :

<?php $str = « one|two|three|four|five »; // Note: la limite est de -2 $array = explode(« | », $str, -2); print_r($array); ?>

Le tableau final contient bien les trois premiers éléments. Les deux derniers (« four » et « five ») ont été exclus du résultat.

Array ( [0] => one [1] => two [2] => three )

Le cas de la limite à zéro

Comme expliqué, une limite de 0 n’est pas très utile car elle se comporte comme une limite de 1.

<?php $str = « one|two|three|four|five »; $array = explode(« | », $str, 0); print_r($array); ?>

Le résultat est un tableau avec un seul élément : la chaîne de départ. C’est le même comportement qu’avec une limite de 1.

Array ( [0] => one|two|three|four|five )

Gestion des erreurs et des cas particuliers

En développement, il faut toujours penser aux cas limites. `explode()` a quelques comportements spécifiques à connaître pour éviter les bugs.

  • Séparateur vide ("") : Fournir une chaîne vide comme séparateur est une erreur. Depuis PHP 8.0, cela lève une ValueError. Avant cette version, la fonction retournait false.
  • Chaîne d’entrée vide : Si vous passez une chaîne vide à `explode()`, le résultat est un tableau contenant une seule chaîne vide : array(1) { [0]=> string(0) "" }.
  • Séparateur non trouvé : Si le séparateur n’existe pas dans la chaîne, la fonction ne peut rien couper. Elle retourne donc un tableau avec la chaîne d’origine comme unique élément.

Attention avec list()
Si vous utilisez list() pour assigner les résultats de explode() à des variables, vous risquez un Warning: Undefined array key si le tableau a moins d’éléments que prévu.

Pour éviter ça, la solution est d’utiliser la fonction array_pad() pour garantir que votre tableau a toujours le bon nombre d’éléments, en ajoutant des valeurs nulles si nécessaire.

Fonctions alternatives et complémentaires

explode() est très utile, mais PHP propose d’autres fonctions pour manipuler les chaînes. En voici quelques-unes à connaître.

  • implode() : C’est l’opération inverse. Elle prend un tableau et le transforme en une seule chaîne de caractères en joignant les éléments avec un « liant ».
  • preg_split() : Une version plus puissante de `explode()`. Elle utilise une expression régulière (regex) comme séparateur, ce qui permet des découpes beaucoup plus complexes.
  • str_split() : Divise une chaîne en un tableau de caractères, où chaque élément a une longueur fixe (par défaut, 1 caractère).
  • mb_split() : C’est l’équivalent de `preg_split` pour les chaînes qui utilisent des encodages sur plusieurs octets, comme l’UTF-8. Indispensable si vous travaillez avec des caractères spéciaux ou différentes langues.

Voilà, vous avez les bases solides pour utiliser explode() dans vos projets PHP. C’est une fonction simple mais essentielle pour analyser et manipuler des données textuelles.

Le meilleur conseil reste de faire des essais. Prenez une chaîne et testez les différentes valeurs du paramètre limit pour bien voir comment le résultat change.

Vous pourriez également aimer...