21.2. Краткий обзор концепций функций aspell
Полный обзор этих функции мы не будем делать, так как они уже устарели. В случае необходимости обратитесь к документации по этому вопросу. Для понимания отличия этих функции от pspell необходимо знать наиболее распространенные способы их реализации на практике.
Функции aspell призваны решать задачи поиска ошибок в словах и предложениях. Принцип работы данных функций очень прост. Прежде всего в коде необходимо указать, с каким словарем вы собираетесь работать, т. е. является ли он русским или английским и т. д. Также вам необходимо воспользоваться библиотекой, находящейся по адресу: http://aspell.sourceforge.net/. Когда все проблемы с библиотекой aspell решены, предлагаем перейти к изучению основных функций aspell:
• aspell_new,
• aspell_check,
• aspell_check_raw,
• aspell_suggest.
ВНИМАНИЕ
Если вам придется изучать какой-либо код программы, в которой используются функции проверки правописания, то, чтобы отличить функции aspell, просто посмотрите на первое слово. Как вы уже заметили, эти функции начинаются с одинакового слова aspell. Это делает его более систематизированным и понятным в процессе изучения того или иного кода программы.
Чтобы произвести вызов нового словаря, необходимого вам в работе, следует воспользоваться функцией aspell_new(). Ее синтаксис:
int aspell_new (string master, string personal)
Функция открывает указанный в ней словарь, а также производит возврат целого значения, равного идентификатору на ссылаемый словарь, для использования его в других функциях aspell. Библиотека может также быть создана самостоятельно, поэтому параметры функции aspell_new имеют две строки: string master, string personal. Обратите внимание, что объявление словаря производится в кавычках "".
Функция aspell_new работает в РНР 3—3.0.7 и РНР 4.
Пример использования функции aspell_new
<?
$ident = aspell_new("english");
?>
Функция вызывает английский словарь, при этом присваивает описанный выше идентификатор переменной $ident. После вызова словаря можно непосредственно приступать к проверке правильности написания слов и предложений. Для этого воспользуемся функцией aspell_check(). Функция имеет следующий синтаксис:
boolean aspell_check(int dictionary_link, string word)
Возвращает значение либо true, либо false. Как правило, используется в операторах условия. Значение true возвращается в том случае, если указанное нами слово, в данном случае за это отвечает параметр string word в функции aspell_check(), будет верным, т. е. не будет содержать ошибок. В противном случае получаем значение false. Например:
<?
$ident = aspell_new("english");
if (aspell_check($ident, "dogg") )
{
echo "Слово написано верно и не содержит никаких ошибок";
}
else {
echo "Приведенное слово содержит ошибки";
}
?>
Результатом работы данной программы будет фраза, выведенная браузером:
Приведенное слово содержит ошибки
Аналогичную задачу выполняет функция aspell_check_raw(), единственное ее отличие от aspell_check() состоит в том, что aspell_check_raw() производит поиск ошибки без изменения регистра слова или же без попытки автоматически исправить ошибку. Функция так же, как и aspell_check(), возвращает true в случае правильного написания слова и false — неправильного, т. е. с ошибкой. Например:
<?
$ident = aspell_new("english");
if (aspell_check_raw($ident, "dog"));
{
echo "Слово написано верно и не содержит никаких ошибок";
}
else {
echo "Приведенное слово содержит ошибки";
}
?>
Результатом работы данной функции будет
Слово написано верно и не содержит никаких ошибок.
Чтобы более подробно разобраться в различиях работы данных функций, поэкспериментируйте самостоятельно.
После того как проверена правильность слова, можно воспользоваться которая предложит нам массив значений правильного написания указанного нами слова. Именно за этот процесс отвечает функция aspell_suggest(). Ее синтаксис:
array aspell_suggest(int dictionary_link, string word)
Как видно из синтаксиса, функция возвращает массив значений используемого нами слова. Например:
<?
$ident = aspell_new("english");
if (aspell_check($ident, "test") ) {
echo "Слово написано без ошибки";
}
else
{
$correct = aspell_sugest ($ident, "test");
for ($i = 0; $i<count ($correct); $i++)
{
echo "Слова, предлагаемые для исправления:". $ correct[$ i]. "<br>";
}
}
?>
В ходе выполнения скрипта при неправильном написании слова будет выведен список возможных исправлений, в противном случае — фраза: «Слово написано без ошибки», что и произойдет в нашем случае. Попробуйте изменить скрипт так, чтобы он производил выполнение блока программы, который заключен между фигурными скобками оператора else. Действительно, один из способов будет верным , если вы просто вместо правильного слова напишите слово, содержащее ошибку, либо же просто произведете выполнение программы, изменив строку оператора. условия на строку, вызывающую вместо true false. Это делается введением в начало строки знака ! (отрицания):
if (!aspell_check($ident, "test"))
Проделайте эти операции самостоятельно и понаблюдайте, что в результате изойдет. На этом рассмотрение функция aspell закончено, перейдем к более пространенным функциям pspell.