Explode est utilisé pour diviser facilement une chaîne de caractères par un séparateur.
PHP 4 et versions ultérieures |
---|
Brève description |
Exigences |
Note : Il n'est pas possible d'insérer un tableau, seulement une chaîne. |
Nous avons souvent besoin de diviser une chaîne de caractères selon une règle simple. Par exemple, une liste de chiffres séparés par des virgules.
La fonction explode() est idéale pour cela. Elle prend le séparateur (qui sépare la chaîne de caractères) comme premier paramètre et les données elles-mêmes comme second paramètre :
$cisla = '3, 1, 4, 1, 5, 9';$parser = explode(',', $cisla);foreach ($parser as $cislo) {echo $cislo . '<br>';// Ici nous pouvons traiter les nombres plus loin}
Mais que se passe-t-il si les chiffres sont séparés par des virgules, mais qu'il y a des espaces autour d'eux ?
La solution consiste à analyser la plus petite sous-chaîne commune, puis à supprimer les caractères indésirables qui l'entourent (espaces et autres espaces blancs) :
$cisla = '3, 1,4, 1 , 5 ,9';$parser = explode(',', $cisla);foreach ($parser as $cislo) {echo trim($cislo) . '<br>';// Ici nous pouvons traiter les nombres plus loin}
Dans ce cas, la fonction trim()
supprime élégamment les espaces blancs autour des caractères (espaces, tabulations, sauts de ligne, ...), ne donnant que des données propres.
ASTUCE : Pour de nombreux exemples, explode() ne convient pas et il est bien mieux d'utiliser des expressions régulières.
Cependant, il arrive souvent que nous ne voulions analyser les données que jusqu'à une certaine distance, et le troisième paramètre (facultatif) limite peut être utilisé à cette fin.
Par exemple, dans le cas de données structurées séparées par deux points, nous voulons récupérer le contenu après le premier point et ignorer les autres points. Exemple :
$cas = 'format : "j.n.Y - H:i"';
Si nous devions analyser la chaîne seulement comme :
$parser = explode(':', $cas);
Nous obtiendrions ces 3 sous-chaînes (dans d'autres cas, il pourrait y en avoir beaucoup plus) :
'format''"j.n.Y - H''i"'
Par conséquent, nous fixons une limite au nombre d'éléments à obtenir (et éventuellement tous les autres éléments seront ajoutés à la fin du dernier élément) :
$parser = explode(':', $cas, 2);// reviennent :echo $parser[0]; // formatecho $parser[1]; // "j.n.Y - H:i"
Note: Les guillemets non désirés peuvent être supprimés de la chaîne de caractères, par exemple, en utilisant la fonction
trim()
:
echo trim($parser[1], '"'); // le second paramètre spécifie la carte des caractères à supprimer
Souvent, nous avons besoin de récupérer une chaîne de caractères qui est délimitée par deux autres chaînes de caractères. Il n'existe pas de fonction pour cela directement en PHP, mais nous pouvons l'écrire nous-mêmes :
function between(string $left, string $right, string $data): string{$l = explode($left, $data);$r = explode($right, $l[1]);return $r[0];}
Une division et un travail beaucoup plus élégants avec les chaînes de caractères peuvent être réalisés en utilisant les expressions régulières, dont je parle sur une page séparée.
$ip = '10.0.0.138';$parser = explode('.', $ip);echo $parser[0]; // imprime "10"echo $parser[1]; // imprime "0" ;
La variable $ip
contient une chaîne d'entrée qui est analysée selon le délimiteur .
, le retour est un tableau. L'analyse syntaxique se poursuit jusqu'à la fin de la chaîne, sauf si une limite est spécifiée.
# | Type | Description |
---|---|---|
1 | string | Chaîne de séparation. |
2 | string | Chaîne de caractères analysée. |
3 | int | limite d'analyse. Il s'agit d'un paramètre facultatif. Exemple : |
$text = 'PHP est mon langage préféré !';$parser = explode('', $text, 1);echo $parser[0]; // imprime le premier motecho $parser[1]; // imprime le reste du texteecho $parser[2]; // ne produit rien car une limite a été fixée !
La valeur de retour est un tableau contenant une chaîne de caractères analysée.
Les indices sont numérotés de zéro à X
, sauf si une limite est spécifiée.
Version de PHP | Description |
---|---|
5.1.0 | Ajout de la prise en charge de la limite négative sur les passes. |
4.0.1 | Ajout d'un paramètre optionnel limite. |
Lorsqu'on utilise une limite négative, le nombre d'éléments à partir de la fin de la chaîne est donné.
Exemple :
$str = 'un|deux|trois|quatre';// limite positiveprint_r(explode('|', $str, 2));// limite négative (depuis PHP 5.1)print_r(explode('|', $str, -1));
Les champs suivants seront retournés :
Array([0] => one[1] => two|three|four)Array([0] => one[1] => two[2] => three)
Jan Barášek Více o autorovi
Autor článku pracuje jako seniorní vývojář a software architekt v Praze. Navrhuje a spravuje velké webové aplikace, které znáte a používáte. Od roku 2009 nabral bohaté zkušenosti, které tímto webem předává dál.
Rád vám pomůžu:
Články píše Jan Barášek © 2009-2024 | Kontakt | Mapa webu
Status | Aktualizováno: ... | fr