int similar_text(string left, string right, reference percentage)
Функция similar_text (листинг 12.71) сравнивает две строки и возвращает число символов, которые они имеют. При задании аргумента percentage эта функция возвращает совпадение в процентах. Сравните эту функцию с функциями metaphone и soundex.
Алгоритм, использованный в функции similar_text, взят из книги Иана Оливера (Ian Oliver) Programming Classics: Implementing the World's Best Algorithms, опубликованной в издательстве Prentice Hall, узнать более подробно о ней можно на Web-узле издательства (<http://www.phptr.com/ptrbooks/ptr_01310 04131.html>).

| Листинг 12.71. Функция similar text_
<?php
// создать две строки
$left = "Leon Atkinson";
$right = "Vicky Atkinson";
// проверить, насколько они подобны
$i = similar_text($left, $right, $percent);
// распечатать результаты
print($i . " общих символов<Ьг>п");
print($percent . "% подо6ия<Ьг>п");

string soundex(string text)
Функция soundex (листинг 12.72) возвращает идентификатор, основанный на анализе звучания слов при произношении. Слова, подобные по звучанию, имеют подобные или идентичные коды, возвращаемые функцией soundex. Код soundex представляет собой последовательность, состоящую из четырех символов и начинающуюся с букв.
Эту функцию можно сравнить с функциями similar_text и metaphone. Алгоритм soundex описан Дональдом Кнутом в третьем томе его книги Искусство про­граммирования, вышедшей в Издательском доме "Вильямс".

| Листинг 12.72. Функция soundex_
<?php
print(soundex("lion") . "<br>" . soundex("lying"));

12.7. Проверка орфографии
Библиотека Pspell PHP, заменившая собой устаревшую библиотеку Aspell, позволяет проверить орфографию.
integer pspell_add_to_personal(integer configuration, string word)
Функция pspell_add_to_personal (листинг 12.73) добавляет слово в персональный словарь. При этом необходимо добавить ссылку на настройки, созданные pspell_new_config.

| Листинг 12.73. Функция pspell_add_to_personal_
<?php
//создать настройку
$config = pspell_config_create("en"); //установить путь к персональному словарю pspell_config_personal($config, "/tmp/custom.pws"); // загрузить словарь
$new_config = pspell_new_config($config); // добавить слово в словарь
pspell_add_to_personal($new_config, "Leon"); // сохранить персональный словарь pspell_save_wordlist($new_config);
?>

integer pspell_add_to_session(integer configuration, string word)
Функция pspell_add_to_session предназначена для добавления слова к сеансу.
boolean pspell_check(integer dictionary, string word)
Функция pspell_check (листинг 12.74) проверяет орфографию слова.

| Листинг 12.74. Функция pspell_check_
<?php
//open dictionary
$dictionary = pspell_new("en");
if(pspell_check($dictionary, "Leon"))
{
print('Yes');
}
else
{
print('No');
}

integer pspell_clear_session(integer dictionary)
Функция pspell_clear_session предназначена для удаления слов после сеанса. 
integer pspell_config_create(string language, string spelling, string jargon, string encoding)
Функция pspell_config_create загружает словарь и возвращает идентификатор. При этом необходимо задавать язык в виде двухбуквенного кода, за которым следует необязательный знак подчеркивания с последующим двухбуквенным кодом страны.
Аргумент spelling предоставляет возможность выбора между языками, для которых существует разница в орфографии. Например, для английского языка допустимыми значениями являются american, british и canadian. Аргумент jargon предназначен для выбора между словарями, содержащими жаргонные выражения. Например, применение medical включает термины, используемые в медицине.
Аргумент encoding устанавливает используемую для слов кодировку. Это относится к файлам .map в инсталляции pspell. Например, при использовании кодировки iso8859-1 используется файл iso8859-1.map.
Эта функция позволяет задавать параметры перед полной инициализацией проверки орфографии. После установки параметров необходимо вызвать pspell_new_config. Вместо вызова этих двух функций можно ограничиться вызовом одной функции pspell_new.