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

Petit nouveau ! | 2 Messages

20 juil. 2022, 10:14

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

ynx
Mammouth du PHP | 586 Messages

20 juil. 2022, 11:37

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);

Petit nouveau ! | 2 Messages

20 juil. 2022, 15:30

merci beaucoup,
j'ai également trouvé en supprimant le "+" à la fin de ma regex