Page 1 sur 1

preg_split, séparation par un point et récupération du séparateur (PREG_SPLIT_DELIM_CAPTURE)

Posté : 20 juil. 2022, 10:14
par cedrick21
Bonjour à tous,

j'essaye de séparer des phrases par plusieurs éléments (espace, tiret, point, apostrophe, et tout autre signe de ponctuation).
Je souhaite récupérer dans mon array final les mots ainsi que les caractères séparateurs.

Sauf que dans le cas où un point (que je veux récupérer) est suivi d'un espace, il ne me récupère pas le point.
Voici mon exemple :

Code : Tout sélectionner

$phrase = 'Ceci est un exemple. Rien de plus simple.'; $output = preg_split("/([.\s,'-])+/", $phrase, 0, PREG_SPLIT_DELIM_CAPTURE);
Et je récupère ceci :
Array ( [0] => Ceci [1] => [2] => est [3] => [4] => un [5] => [6] => exemple [7] => [8] => Rien [9] => [10] => de [11] => [12] => plus [13] => [14] => simple [15] => . [16] => )
On voit que le point situé après "exemple" n'est pas récupéré.
En revanche je récupère bien le point final de ma variable (après "simple"), ainsi qu'une valeur vide (index 16).

Si vous aviez une petite idée pour bien récupérer ce point, cela m'aiderait beaucoup.
En vous remerciant par avance
Cédric

Re: preg_split, séparation par un point et récupération du séparateur (PREG_SPLIT_DELIM_CAPTURE)

Posté : 20 juil. 2022, 11:37
par ynx
Bonjour,

Essaye comme ceci :
$phrase = "Ceci est un exemple. Rien de plus simple.";
$output = preg_split("/\b/u", $phrase, 0, PREG_SPLIT_DELIM_CAPTURE);
print_r($output);

Re: preg_split, séparation par un point et récupération du séparateur (PREG_SPLIT_DELIM_CAPTURE)

Posté : 20 juil. 2022, 15:30
par cedrick21
merci beaucoup,
j'ai également trouvé en supprimant le "+" à la fin de ma regex