Supprimer des mots en expression regulières

nikizim Messages postés 76 Statut Membre -  
Smoking bird Messages postés 911 Statut Membre -
Bonjour,

je souhaiterais supprimer tous les mots suivant d'une chaine de caractère : le, la, les, de, des, ...

J'ai donc créé le code suivant :

$words = array ('de', 'du', 'des', 'le', 'la', 'les', 'il', 'elle', 'on', 'l\'', 'et');
	
echo $string_str = preg_replace( '#('.implode('|', $words).')#i', '', $string);


le souci c'est que ça marche et trop bien :). Car si j'ai la chaine de caractère suivante :

"Ma chaine de caractère est compris en deux mots et treize mots. Et je veux fait un meilleur code."

Et voila tout ce qui disparait :

"Ma chaine de caractère est compris en deux mots et treize mots. Et je veux faire un meilleur code."

Quelqu'un serait-il comment faire pour éviter de supprimer les mots dans d'autres mot comme meilleur => meur?

merci infiniment d'avance.
A voir également:

2 réponses

Smoking bird Messages postés 911 Statut Membre 58
 
$pattern='#\s(le|la|les|du|il)\s#i';

\s correspond à des espaces, tu t'assures donc que ce sont des mots seuls et pas des bouts de mots^^
tu peux utiliser \b aussi, ou

$pattern='#\s[\w]{2}\s#i';

qui récupère tous les mots de 2 lettres (pattern à compléter par tes soins pour récupérer 'elles' et autres ;))
0
nikizim Messages postés 76 Statut Membre 11
 
merci beaucoup ça marche plutôt bien mise à part que si le premier mot est un 'le' ça ne marche pas mais je me débrouillerai.

encore merci.
0
Smoking bird Messages postés 911 Statut Membre 58
 
#(\s|\b)[\w]{2}\s#i

ce pattern là devrait rectifier le tir^^

use et abuse de cet outil pour apprendre les regexp, c'est vraiment parfait^^

https://lumadis.be/regex/test_regex.php
0