Hello,

J'essaye de découper un long texte en tableau contenant chacun de ses mots. C'est très facile avec str_word_count, et avec un peu de str_to_lower, str_tags et array_unique j'arrive à de bons résultats.

$arr = array_unique(str_word_count(str_to_lower(strip_tags($str)), 1));


Grâce à setlocale(LC_CTYPE, 'french') (je suis sous Windows -EasyPHP-) il me gère très bien les accents lors de la découpe.

Le problème est celui indiqué dans les notes en Warning sur php.net, c'est à dire que ma locale change de temps en temps sans que je lui ai fait quoique ce soit.
Si je reload plusieurs fois ma page, les accents ne sont pas toujours pris en compte correctement (il me coupe les mots au niveau des accents).

J'ai donc rajouté un troisième parametre ("àâäéèêëïîöôùüû") à str_word_count pour le forcer à prendre ces caractères en compte mais c'est pas très propre ni pratique.

Si l'un de vous avait un tuyau pour minimiser l'impact de ce changement de valeur, ça m'interesserai ^^

Edit : En fait, mon troisième parametre ne résoud pas le problème. Je me suis rabbatu sur une transposition des lettres accentués vers une version "simple" (ç => c, é => e, etc)

Re-edit : Je ne parviens pas à lui faire comprendre les « » “ ” ‘ ’, il continue de me couper les mots lorsqu'il rencontre l'un d'eux. Je vais devoir eux aussi les "simplifier", snif
Modifié par Tymlis (22 Jul 2008 - 19:43)