Jump to content

Regex pour diviser un texte en groupes de mots


Recommended Posts

Bonjour,

je cherche à diviser un texte en groupes de mots avec Regex.

Les groupes de mots doivent faire entre 22 et 30 mots max. Le nombre de mots à choisir entre 22 et 30 doit être aléatoire pour chaque groupe de mots.

 

Voici un exemple que j'ai fais manuellement :


Texte original:

Depuis que je mange des sushis, j'adore la vodka. Certes, cette phrase n'a vraiment aucun sens mais c'est pour montrer un peu l'orthographe à la française avec des accents et des caractères un peu bizarres. J'essaie également de mettre des apostrophes ainsi que montrer un nombre qui a des pourcentages comme 55% ou encore des prix comme 67€ ou bien 85$. Sans oublier bien sûr un smiley étrange :) ou encore ^^. Bien sûr, il est toujours possible d'avoir un ; ou encore une parenthèse comme : (voici une parenthèse).

 

Citation

Output1 (23 mots):
Depuis que je mange des sushis, j'adore la vodka. Certes, cette phrase n'a vraiment aucun sens mais c'est pour montrer un peu l'orthographe

 

Citation

Output2 (27 mots):
à la française avec des accents et des caractères un peu bizarres. J'essaie également de mettre des apostrophes ainsi que montrer un nombre qui a des pourcentages

 

Citation

Output3 (32 mots):
comme 55% ou encore des prix comme 67€ ou bien 85$. Sans oublier bien sûr un smiley étrange :) ou encore ^^. Bien sûr, il est toujours possible d'avoir un ; ou encore une

 

Citation

Output4 (5 mots):
parenthèse comme : (voici une parenthèse).

 

Est-ce que quelqu'un connaitrait un code regex qui permette de diviser ce type de textes en plusieurs groupes comme dans mon exemple SVP ? :)

Merci beaucoup pour votre aide =)

Link to post
Share on other sites
  • 2 weeks later...

Bonjour,

 

j'ai joué un peu, et ai trouvé ceci :

<?php
$MIN=20;
$MAX=30;

$exemple="Depuis que je mange des sushis, j'adore la vodka. Certes, cette phrase n'a vraiment aucun sens mais c'est pour montrer un peu l'orthographe à la française avec des accents et des caractères un peu bizarres. J'essaie également de mettre des apostrophes ainsi que montrer un nombre qui a des pourcentages comme 55% ou encore des prix comme 67€ ou bien 85$. Sans oublier bien sûr un smiley étrange :) ou encore ^^. Bien sûr, il est toujours possible d'avoir un ; ou encore une parenthèse comme : (voici une parenthèse).";


$mots = preg_split("/[\s,.]+/", $exemple);

$nombre=random_int($MIN, $MAX);
$taille = count($mots);

for($start=0; $start < $taille ; $start+=$nombre) {
        $phrase=array_slice($mots,$start,$nombre) ;
        print(implode(" ",$phrase));
        print "\n\n";
}
?>

 

En l'exécutant, j'ai bien des phrases, scindées aléatoirement par tranche de 20 à 30 mots.

ns.le-hub.net:dan# php ./test.php
Depuis que je mange des sushis j'adore la vodka Certes cette phrase n'a vraiment aucun sens mais c'est pour montrer un peu l'orthographe à la française avec

des accents et des caractères un peu bizarres J'essaie également de mettre des apostrophes ainsi que montrer un nombre qui a des pourcentages comme 55% ou encore

des prix comme 67€ ou bien 85$ Sans oublier bien sûr un smiley étrange :) ou encore ^^ Bien sûr il est toujours possible d'avoir un ;

ou encore une parenthèse comme : (voici une parenthèse)

 

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...