Aller au contenu

Remplacement de mots dans une chaine


equids

Sujets conseillés

J'ai une chaine de caractères, une phrase, par exemple :

"Le site à de nouveaux membres, depuis qu'il s'est amélioré"

Je voudrais retirer le mot "de" de la chaine, autant de fois qu'il y serait présent, mais sans que ça n'affecte les mots qui contiennent un "de".

En clair le résultat serait :

"Le site à nouveaux membres, depuis qu'il s'est amélioré" et non pas :

"Le site à nouveaux membres, puis qu'il s'est amélioré"

J'ai essayé de trouver un système, mais à chaque fois le mot supprimé qui est contenu dans un autre mot est aussi effacé.

Merci de votre aide :)

Lien vers le commentaire
Partager sur d’autres sites

hum globalement le mot "de" est toujours précédé et suivi par un espace.

Donc au lieux de chercher à supprimer la chaine "de", essaie en supprimant la chaine " de ". Cela ne marchera pas pour pour les chaines commençant le mot "De", mais dans ce cas tu peux temporairement ajouter un espace en début de chaine avant de faire la vérification.

Ce n'est peut-être pas très propre, mais cela devrait fonctionner.

++

Patrick

Lien vers le commentaire
Partager sur d’autres sites

Une autre solution serait de sortir l'artillerie lourde, c'est à dire les expressions régulières.

Un preg_replace(), en précisant "\b" autour du mot ou les marqueurs de début ou de fin phrase, et c'est partit. Tu peux même y mettre plusieurs mots si tu en as plusieurs à supprimer.

Lien vers le commentaire
Partager sur d’autres sites

C'est pas mal comme astuce,

mais le souci, c'est que j'essaye de retirer les : de - des - le - les etc...

Et donc ca retire les " de" et du coup, les "des" de la chaine deviennent des "s" tous seuls,

bon alors on pourrait retirer les "s" après lol, mais ça fait un peu bidouillage,

si il y'a une méthode plus conventionnelle, je suis preneur...

Une autre solution serait de sortir l'artillerie lourde, c'est à dire les expressions régulières.

Un preg_replace(), en précisant "\b" autour du mot ou les marqueurs de début ou de fin phrase, et c'est partit. Tu peux même y mettre plusieurs mots si tu en as plusieurs à supprimer.

Oui c'est plutot ce genre de solution qu'il me faudrait,

j'abuse peut être, mais est ce que tu pourrais me donner un exemple de code avec preg_replace() pour retirer par exemple les "de" et les "des" d'une chaine "$chaine" ?

Bon, ba j'ai trouvé, je mets le code, on sait jamais si ça peut intéresser quelqu'un :

$chaine = preg_replace("/\b".la."\b/i", " ", $chaine);

Je n'ai pas encore testé, mais je pense qu'on peut faire une boucle avec une liste de mots entrée dans un tableau :

$motInterdit[$i]

Modifié par equids
Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...