Bonjour,
Le 06/09/2008 14:33, mostafa a écrit :
la fonction str_word_count ne marche pas sur une chaine codée en
utf-8; y-a-il une autre façon de compter le nombre de mots d'une
chaine codée en utf-8 ?
Je vais essayer de proposer une solution. Mais tout d'abord, je dois
savoir ce qu'est un mot selon str_word_count
<cit.
http://fr3.php.net/str_word_count>
Dans cette fonction, la notion de "mot" dépend de la configuration de
localisation. C'est une chaîne qui contient tous les caractères
alphabétiques, et qui peut contenir, mais pas commencer par "'" et "-".
</cit.>
Une idée serait donc de compter par preg_match_all le nombre de fois où
l'on trouve une série commençant par un \pL et suivi d'un nombre
quelconque de \pL ou de « ' » ou de « - », le tout en mode UTF-8 :
http://fr2.php.net/manual/fr/regexp.reference.php#regexp.reference.unicode
http://fr2.php.net/manual/fr/reference.pcre.pattern.modifiers.php
Un truc du genre : "/\pL[-'\pL]/u"
Mais bon, il y a peut-être plus simple pour les lettres (ne pas prendre
en compte les lettres grecques par exemple) et inversement il faudrait
peut-être étendre la simple quote à l'apostrophe typographique, ou le
tiret ASCII à d'autres genres de traits d'union.
Est-ce que tu voudrais bien préciser quels sont les types de caractères
que tu peux t'attendre à rencontrer et à devoir traiter comme faisant
partie d'un mot ? Par ailleurs, comme je ne sais pas encore si cela a un
impact sur la recherche, est-ce que tu sais si tu peux rencontrer des
accents non pré-composés (ex. : « e + accent aigu » au lieu de « é ») ?
Cordialement,
--
Olivier Miakinen