integer pspell_store_replacement(integer dictionary, string misspelling, string correction)
Функция pspell_store_replacement предназначена для установки прав замены для открытого словаря. PHP использует эту пару для предложения замен при последующей проверке. При использовании функции pspell_config_repl можно задать сохранение замен в отдельном файле.
array pspell_suggest(integer dictionary, string word)
Функция pspell_suggest (листинг 12.76) возвращает массив возможных замен для ошибочного слова.

j Листинг 12.76. Функция pspell_suggest_
<?php
$dictionary = pspell_new ("en"); $word = "instantiayt"; if(!pspell_check($dictionary, $word)) {
foreach(pspell_suggest($dictionary, $word) as $suggestion)
{
print("$suggestion<br>");
}
}

12.8. Регулярные выражения
Регулярные выражения являются мощным средством проверки строк на соответствие определенным шаблонам и используют специальный символический язык. При этом PHP предлагает два типа функций для регулярных выражений: свой собственный и совместимый с Perl. Детально регулярные выражения описываются в главе 22, "Синтаксический анализ и обработка строк".
Поддержку регулярных выражений, совместимых с PHP, добавил Андрей Змиев-ский (Andrei Zmievski). Чаще всего регулярные выражения ограничиваются символами / или |, но могут использоваться любые печатные символы, не являющиеся буквами, цифрами, а также обратная косая черта. После второго ограничителя можно разместить один или несколько модификаторов. Такими модификаторам являются буквы, меняющие способ интерпретации регулярного выражения. Есть несколько специфических различий между регулярными выражениями, используемыми в PHP и в Perl 5. Их не очень много, и вы, вероятно, с ними никогда не столкнетесь, и объяснение их специфики ничего не дает без детального ознакомления с регулярными выражениями. Но если вы все-таки интересуетесь этим вопросом, ознакомьтесь с отличным описанием PHP, которое можно найти в Internet по адресу <http://www. php.net/manual/html/ref.pcre.html>.
boolean ereg(string pattern, string text, array matches)
Функция ereg (листинг 12.77) оценивает аргумент pattern как регулярное выражение и делает попытку найти совпадения в аргументе text. При наличии необязательного аргумента matches каждое совпадение будет добавлено в массив. Значение TRUE возвращается, если есть как минимум одно совпадение; в противном случае возвращается значение FALSE.
Первый элемент массива matches, имеющий нулевой индекс, будет содержать совпадение всего регулярного выражения. Последующие элементы массива matches будут содержать совпадения подвыражений. В данном примере эти выражения заключены в скобки.

Листинг 12.77. Функция ereg

<?php
// показать пользовательского агента print("Пользовательский агент: {$_SERVER['HTTP_USER_AGENT']}<br>n");
// сделать попытку проанализировать пользовательского агента
if(ereg("*(.+)/([0-9]).([0-9]+)",
$_SERVER['HTTP_USER_AGENT'], $matches))
{
print("Полное совпадение: $matches[0]<br>n"); print("Браузер: $matches[1]<br>n"); print("Версия: $matches[2]<br>n"); print("Релиз: $matches[3]<br>n");
}
else
{
print(" Пользовательский агент не распознан");
}

string ereg_replace(string pattern, string replacement, string text)
Функция ereg_replace (листинг 12.78) предназначена для замещения определенных подстрок в данных, заданных аргументом text. При каждом совпадении значения pattern подстроки в строке text она заменяется данными, заданными аргументом replacement. Сами данные из аргумента text остаются неизменными, но возвращается его измененная версия.
Если pattern содержит подвыражения в скобках, аргумент replacement может содержать специальный код, определяющий заменяемое подвыражение. Используемая форма выглядит следующим образом: две обратные косые с последующей за ними одной цифрой от 0 до 9. Нуль соответствует всему выражению, цифры 1-9 соответствуют девяти подвыражениям соответственно. Подвыражения нумеруются слева направо, что соответствует вложенным подвыражениям. 

j Листинг 12.78. Функция ereg_replace_

<?php
// заменить символ перевода строки на тег разрыва
$text = "line1nline2nline3n";
print(ereg_replace("n", "<br>", $text));
print("<hr>n");
//смешать эти слова
$text = "one two three four";
print(ereg_replace("([a-z]+) ([a-z]+) ([a-z]+) ([a-z]+)", "\4 \2 \1 \3", $text));
?>

boolean eregi(string pattern, string text, array matches)
Функция eregi аналогична функции ereg, за исключением того, что соответствие букв определяется независимо от регистра.
string eregi_replace(string pattern, string replacement, string text)
Функция eregi_replace аналогична функции ereg_replace, за исключением того, что соответствие букв определяется независимо от регистра.
array fnmatch(string pattern, string filename, integer flags)
Функция fnmatch (листинг 12.79) проверяет имя файла на соответствие шаблону. Этот шаблон должен удовлетворять шаблонам, принятым в командной оболочке для имен файлов.
Необязательный аргумент flags управляет проверкой. Если задано значение FNM_NOESCAPE, игнорируются управляющие коды, предваренные обратной косой чертой. Если задано значение FNM_PATHNAME, то выполняется литеральное сравнение символов "косая черта", т.е. они не считаются групповыми символами. Если задано значение FNM_PERIOD, то вызывается точное соответствие ведущих точек.

| Листинг 12.79. Функция fnmatch_
<?php
if(fnmatch(,php-[4-5].?.*', "php-5.1.2.tar.gz"))
{
print('да');
}
else
{
print('нет');

array preg_grep(string pattern, array data)
Функция preg_grep сравнивает элементы массива, переданного аргументом data, совпадающие с заданным шаблоном.