Списки слов проверки орфографии и принципы работы с ними
Как всякий язык, РНРпозволяет программисту помимо использования зарезервированного словаря создание самостоятельных списков слов, при помощи которых в дальнейшем будут проверяться те или иные слова. Это очень полезно, когда вам необходимо контролировать, например, ограниченный перечень слов, известных заранее. Рассмотрим следующие функции:
pspell_add_to_personal(),
pspell_add_to_session(),
pspell_clear_session(),
pspell_config_save_repl(),
pspell_new(),
pspell_new_config(),
pspell_new_personal(),
pspell_save_wordlist().
Это не полный перечень функций работы со списками слов, но изучив основные принципы работы с этими функциями, вы без проблем сможете профессионально программировать. В существующие списки слов можно не только удалять, но и добавлять необходимые слова. Это позволяет сделать функция pspell_add_to_personal (). Функция имеет следующий синтаксис: int pspell_add_to_personal(int dictionary_link, string word) dictionary_link - идентификатор функции конфигурации, word - вносимое слово. Функция pspell add to personal () позволяет добавлять слово в персональный спи-сок слов. Если, чтобы открыть словарь, вы использовали функции pspell_new_config() совместно с pspell config personal (), то в этом случае для сохранения списка слов можно воспользоваться функцией pspell_save_wordlist(). ВНИМАНИЕ Эта функция не будет работать, если у вас не установлена библиотека pspell версии 11.2 или aspell.32.5 и позже.
Работу функции pspell_add_to_personal () можно изучить на следующем примере: <? $ident = pspell_config_create("en"); pspell_config_personal($ident, "/dict/sellere.pws") ; $link = pspell_new_config($ident) ; pspell_add_to_personal($link, "Sasha"); pspell_save_wordlist($link); ?> Из примера видно, что при помощи функции pspell_add_to_personal () произойдет добавление слова Sasha в список слов, находящийся по пути /diet/ sellere .pws, после чего произойдет операция сохранения данных и программа прекратитвыполнение. Если вам необходимо произвести аналогичное дополнение нового слова к списку слов в текущей сессии, воспользуйтесь функцией Pspell_add_to_session(). Функция аналогична принципу работы pspell_add_to_personal () и имеет такой же синтаксис. Единственное, что их отличает - pspell_add_to_session() производит дополнение в список листов в текущей сессии. Помимо этого в текущем сеансе можно не только добавлять, но и удалять слова списка слов. Для этого используется функция pspell_clear_session () . Pspell_clear_session () очищает текущий сеанс. Список слов сеанса становится пустым, и, например, если вы попробуете сохранить слова с использованием функции pspell_save_wordlist (), ничего не случится. Обратите внимание например: <? $ident = pspell_config_create("en") ; pspell_config_personal($ident, "/diet/seller.pws"); $link = pspell_new_config($ident); pspell_add_to_personal($link, "Sasha"); pspell_clear_session{$link) ; pspell_save_wordlist($link) ; ?> После выполнения примера слово Sasha не будет записано в наш список слов. Рассмотрим еще одну функцию, представляющую для нас практический интерес. Функция pspell_save_repl () позволяет нам решать, сохранять ли список замены наряду со списком слов. Ее синтаксис:
int pspell_config_save_repl(int dictionary_link, boolean flag) Функция pspell_conf ig_save_repl () используется перед запросом pspell_new_conf ig (). Это определяет, сохранитли pspell_save_wordlist () слова замены наряду со списком слов. Обычно вместо этой функции принято использовать pspell_save_wordlist(). Чтобы произвести вызов нового словаря, необходимо воспользоваться функцией pspell_new(). Функция похожа наpspell_config_create (). Она оперирует прак¬тически аналогичными понятиями параметров, за исключением нового, добавлен¬ного параметра, увидеть который вы сможете из приведенного синтаксиса данной функции: int pspell_new(string language [, string spelling [, string jargon [, string encoding [, int mode] ]]]) Помимо трех имеющихся, описанных нами ранее, добавлена еще одна разновидность режима работы:
PSPELL_RUN_TOGETHER - словосочетания рассматриваются как одно целое, т. е, конструкция thecat будет являться правильным составом и никакой ошибки определяться не будет, хотя в этом случае должно содержаться место между двумя словами. Изменения этих параметров могут только воздействовать на результаты, возвращенные функцией pspell_check (). В свою очередь функция рspell_suggest будет все еще возвращать предложения.
Пример работы функции pspell_new (): $link = pspell_new("en", "", "", "", (PSPELL_FAST |PSPELL_RUN_T0GETHER)) ; Строка приведенного примера позволяет понять, как производится задание тех или иных параметров. Параметр PSPELL_FAST позволяет производить быструю проверку, при этом режимом PSPELL_RUN_TOGETHER мы указали на то, что словосочетания, написанные вместе, например «thedog», не являются ошибкой и нанихне стоит заострять внимание. Для вызова нового словаря с основной конфигурацией используется функция pspell_new_config (). Функция сама по себе не задает конфигурацию, она позволяет производить обращение к ней с учетом уже определенной на начальном этапе создания скрипта. Функция имеет очень простой синтаксис: int pspell_new_config(int config) Другими словами, функция pspell_new_config () открывает новый словарь с установками, указанными в конфигурации, созданной при помощи функции pspell config_create (),: и изменяемый при помощи функции pspell_config_* (). Этот метод является более гибким и имеетвсе функциональные возможности, определенные функциями pspell_new () и pspell_new_personal ().
ВНИМАНИЕ Параметр конфигурации устанавливается один раз функцией pspell_config_create (). После этого происходит элементарное обращение к идентификатору конфигурации. Пример реализации функции pspell_new_config (): $ident = pspell_config_create("en"); pspell_config_personal($ident, "/diet/seller.pws"); pspell_config_repl($pspell_config, "/diet/seller.repl"); $link = psPell_new_config($ident); Если вам необходимо вызвать новый словарь с персональным списком слов, необходимо воспользоваться функцией pspell_new_personal (). Синтаксис функции похож на синтаксис таких функций, KaKpspell_config_create () и pspell_new (). Единственное, что отличает pspell_new_personal от приведенных - задача, для выполнения которой и была создана данная функция. Синтаксис функции pspell_new_personal(): int pspell_new_personal (string personal, string language [, string spelling [, string jargon [, string encoding [, int mode] ]]]) Функция pspell_new_personal () позволяет открывать новый словарь с персональным списком слов и возвращает идентификатор связи словаря для использования в других функциях pspell. Список слов может изменяться и быть сохранен при помощи функции pspell_save_wordlist (). Однако значения слов для замены не сохраняются. Чтобы их сохранять, необходимо создать конфигурацию, используя pspell_config_create (), установить персональный файл списка слов при помощи функции рsреll_config_реrsоnа1(), установить файл для замены слов функцией pspell_config_repl () и вызвать новый словарь при помощи функции pspell_new_config (). В функции psPell_new_personal () добавлен новый параметр (personal). Персональный параметр (personal) устанавливает файл, в котором происходит добавление слов к персональному списку, после этого файл будет сохранен. Это должно быть абсолютное имя файла, начинающееся с символа /, потому что иначе это будет пониматься как $НОМЕ, который является «корневым» (/root) для большинства систем, и скорее всего не тот путь, который вам необходим. Приведем пример, позволяющий правильно производить работу с данной функцией: $ident = pspell_new_personal(" /diet/seller, pws", "en", "", "", "", PSPELL_FAST|PSPELL_RUN_TOGETHER));