Une seule fonction permet de découper une chaîne suivant un modèle : preg_split(). Dans sa forme la plus simple cette fonction utilise deux paramètres :

- l'expression régulière servant à faire le découpage,
- la chaîne à découper.

La fonction renvoie un tableau contenant les sous-chaînes trouvées.

L'exemple suivant découpe une chaîne suivant les caractères de ponctuation.

Exemple : découpage de chaînes
<?php require('bib_fonctions.php'); htmlDebut('Découpage de chaînes'); $txt = "Il y a bien longtemps, dans une galaxie lointaine, l'Empire Impérial de l'Empereur triomphe sur tous les fronts, broyant tous ceux qui s'opposent à lui d'une main de fer dans un gant d'acier. Seul un petit groupe de rebelles se bat toujours pour la liberté face à la tyrannie, pour le chaos face à l'ordre, et d'abord on fait c'qu'on veut merde !"; $exp = '/[,;.:?!]/'; $t = preg_split($exp, $txt); infoTableau($t); htmlFin(); ?>

On voit que la fonction a aussi capturé les chaînes vides : le dernier élément du tableau correspond à ce qui se trouve après le dernier point d'exclamation.

L'exemple suivant extrait les mots d'un texte. On considère qu'un mot est composé de 1 ou plusieurs caractères, entourés par des caractères d'espacement et/ou des signes de ponctuation.

Exemple : découpage de chaînes
<?php require('bib_fonctions.php'); htmlDebut('Découpage de chaînes'); $txt = "Il y a bien bien longtemps, dans une très lointaine galaxie (36éme lune à gauche après le Djedaille's Bar) ..."; $exp = '/\W/'; $t = preg_split($exp, $txt); infoTableau($t); htmlFin(); ?>

On constate que l'expression \W récupère bien les mots, mais aussi des chaînes vides, correspondant entre autres à la suite des caractères de ponctuation.

Pour éviter ces chaînes vides, nous pouvons appeler preg_split() avec des paramètres supplémentaire :

- un troisième paramètre qui définit le nombre de découpages à faire (par défaut la fonction découpe jusqu'à ce qu'elle ne trouve plus de correspondance au modèle)
- un quatrième paramètre sous la forme d'une constante : PREG_SPLIT_NO_EMPTY qui empêche le renvoi des chaînes vides, et PREG_SPLIT_DELIM_CAPTURE qui demande à la fonction de retourner aussi les délimiteurs (uniquement valable si les délimiteurs sont entourés de parenthèses).

Si on ne veut pas fixer le nombre de découpages et que l'on a besoin d'utiliser le quatrième paramètre, le troisième paramètre soit être -1, ce qui signifiera "découpage sans limite".

Exemple : découpage de chaînes
<?php require('bib_fonctions.php'); htmlDebut('Découpage de chaînes'); $txt = "Il y a bien bien longtemps, dans une très lointaine galaxie (36éme lune à gauche après le Djedaille's Bar) ..."; $exp = '/\W/'; $t = preg_split($exp, $txt, -1, PREG_SPLIT_NO_EMPTY); infoTableau($t); htmlFin(); ?>