Page 1 sur 1

Supprimer des mots dans une chaîne de caractères

Posté : 29 août 2009, 13:40
par Sanceray3
Bonjour à tous,

voilà je vous explique mon problème. J'aimerais travailler une chaine de caractères, afin de retirer toutes les prépositions (le, l', de, du, des.....).

J'ai essayé tout un tas de fonctions mais celles ci me suppriment également les éléments dans les mots.

Je m'explique, par exemple :

Code : Tout sélectionner

$machaine=str_replace("le","","l'abeille et le bourdon");
va me donner "l'abeil et bourdon", alors que j'aurais aimé obtenir "l'abeille et bourdon" dans ce cas de figure.

Quelle fonction est la plus adaptée pour cela. J'en ai essayé cinq, six mais aucune ne me permet de faire ce que je veux faire.

Par avance, grand merci pour vos conseils.

Re: Supprimer des mots dans une chaîne de caractères

Posté : 29 août 2009, 13:48
par Superpilou
Pourquoi ne pas utiliser un explode?
Tu sépares la chaîne de caractère pour la mettre dans un tableau avec la fonction explode.
Ensuite tu boucles et tu effaces les cases te convenant pas.
Puis pour finir ton tableau redevient une chaîne de caractère avec la fonction implode.

Voila

Re: Supprimer des mots dans une chaîne de caractères

Posté : 29 août 2009, 13:58
par Sanceray3
Merci pour ta réponse.

J'avais pensé à cette solution, mais elle me parait "inapropriée", c'est pourquoi je me demandais si il n'y avait pas plus simple, si il n'y avait pas une fonction qui permettait de....

Re: Supprimer des mots dans une chaîne de caractères

Posté : 29 août 2009, 15:09
par FuZZyLine
Salut,
Merci pour ta réponse.
J'avais pensé à cette solution, mais elle me parait "inapropriée", c'est pourquoi je me demandais si il n'y avait pas plus simple, si il n'y avait pas une fonction qui permettait de....
Tu peux essayer ca:
<?php
    $pattern = "#^(le|la|les[ ])|[l|d]'|([l|d]')|([ ](le|la|les)[ ])#mUis";

    $phrase  = "Le petit chaperon rouge, l'abeille et le loup.<br />";
    $phrase .= "Au diapason d'un texte commun d'informations.<br />";
    $phrase .= "D'autres lignes, d'autres mots de la litterature française...<br />";

    echo preg_replace($pattern, " ", $phrase);
?>
Ce qui donne au rendu:


petit chaperon rouge, abeille et loup.
Au diapason un texte commun informations.
autres lignes, autres mots de litterature française...


J'ai pas tout essayé (niveau possibilité) mais il me semble que ca devrait marcher dans
tous les cas. A toi d'adapter/de modifier... en un mot d'améliorer ;)

Bon code @+ ;)

EDIT: Le pattern peut assurément être optimisé mais pas trop le temps... @+ ;)

Re: Supprimer des mots dans une chaîne de caractères

Posté : 30 août 2009, 11:56
par Sanceray3
Grand merci FuZZyLine. Ca semble tout à fait correspondre à ce qu'il me fallait.

Ca me dépanne grandement ! ;)

Re: Supprimer des mots dans une chaîne de caractères

Posté : 30 août 2009, 20:46
par zeus
Modération :
Puisque ta question est résolue, je l'indique en ajoutant la petite icône verte "Résolu" pour que les futures personnes qui voudront consulter ce sujet sachent qu'il contient une solution.

TTu peux réaliser cette opération toi-même en cliquant sur le bouton Image en haut à droite de la réponse qui te semble la plus pertinente, si tu as posté le 1er message en tant que membre (inscrit et identifié).

Alors... inscris-toi !!! ;)