aspell vs hunspell en PHP
+
Par Remi le dimanche 17 avril 2016, 10:07 - HowTo - Lien permanent
Comparatif des extensions de correction orthographique en PHP.
Pspell (aspell)
L'extension pspell est souvent la première trouvée. Elle utilise la bibliothèque aspell et ses dictionnaires. Son utilisation est simple :
$dict2 = pspell_new('fr'); $word = $_SERVER['argc'] > 1 ? $_SERVER['argv'][1] : 'France'; if (pspell_check($dict2, $word)) { printf("Aspell checks '%s': OK\n", $word); } else { printf("Aspell suggests for '%s': %s\n", $word, implode(', ', pspell_suggest($dict2, $word))); }
Malheureusement, cette bibliothèque n'est plus maintenue (depuis 2011) et si elle est encore présente dans RHEL et CentOS, ses dictionnaires ne sont plus disponible dans les dépôts, ce qui rend son utilisation quasi impossible.
Enchant (hunspell)
L'extension enchant est aussi disponible. Elle utilise la bibliothèque enchant et les dictionnaires hunspell. Son utilisation est tout aussi simple :
$broker = enchant_broker_init(); $dict1 = enchant_broker_request_dict($broker, 'fr_FR'); $word = $_SERVER['argc'] > 1 ? $_SERVER['argv'][1] : 'France'; if (enchant_dict_check($dict1, $word)) { printf("Hunspell checks '%s': OK\n", $word); } else { printf("Hunspell suggests for '%s': %s\n", $word, implode(', ', enchant_dict_suggest($dict1, $word))); }
Les dictionnaires, notamment utilisés par LibreOffice ou Firefox sont complets et disponibles dans les dépôts officiels.
Conclusion
Pour faciliter l'utilisation d'anciennes applications qui utiliseraient encore pspell, et comme la question est régulièrement posée, j'ai ajouté l'ensemble des dictionnaires dans le dépôt remi-safe (aspell-* )
L'utilisation d'enchant me semble cependant préférable, et, si besoin, l'adaptation du code très simple.