Bonjour,
Je me tourne vers vous aujourd'hui pour vous exposer mon problème.
Je désirerai supprimer des mots comme (le, les, pour, de, des du, à ...) présents dans des chaines que je voudrai alléger (pour un nuage de tags).
Pour l'instant j'utilise un str_replace qui, vous l'aurez compris, supprime les mots même si ils font partie d'un autre mot, par exemple 'fille' deviendra 'fil'.
J'ai essayé de créer une regex qui s'occupe de cette tâche mais en vain. Pourriez vous m'aider svp ?
Un test pour comprendre :
Le premier echo donne: Les sauterel aiment feuilles
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 <?php $chaine = "Les sauterelles aiment les feuilles"; //Ce que j'utilise maintenant $remplace = array('-',' de ', ' des ', 'les ', 'le ', 'la ', ' pour ', 'un ', 'une ', ' d\'', ' l\'', ' avec ','\''); $par = array(' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '); $chaine1 = str_replace($remplace, $par, $chaine); echo $chaine1; ?> <br /> <?php //ce que j'aimerai faire, mais je test pour l'instant seulement pour 'les' $regex = '|^les|i'; //J'ai aussi testé avec \s seulement je n'arrive pas à combiner les deux $chaine2 = preg_replace($regex,' ',$chaine); echo $chaine2; ?>
Le deuxième echo donne: sauterelles aiment les feuilles
Mais je veux : sauterelles aiment feuilles
En fait la regex doit supprimer les mots choisis qui se trouves soit en début, en millieu ou en fin de chaine.
Quelqu'un a une idée ?
Merci par avance pour votre aide.
Partager