equids Posté 19 Novembre 2008 Posté 19 Novembre 2008 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
Patrick Posté 19 Novembre 2008 Posté 19 Novembre 2008 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
Kioob Posté 19 Novembre 2008 Posté 19 Novembre 2008 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.
equids Posté 19 Novembre 2008 Auteur Posté 19 Novembre 2008 (modifié) 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é 19 Novembre 2008 par equids
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant