Прочие служебные символы

Служебные символы $ и ^ совпадают не с символами, а с определенными позициями в строке. Например, выражение р$ означает строку, которая завершается символом р, а выражение ^р — строку, начинающуюся с символа р.

· Конструкция [^a-zA-Z] совпадает с любым символом, не входящим в указаные интервалы (a-z и A-Z).

· Служебный символ . (точка) означает "любой символ". Например, выражение р.р совпадает с символом р, за которым следует произвольный символ, после чего опять следует символ р.

Объединение служебных символов приводит к появлению более сложных выражений. Рассмотрим несколько примеров:

· ^.{2}$ — любая строка, содержащая ровно два символа;

· (.*) — произвольная последовательность символов, заключенная между и (вероятно, тегами HTML для Прочие служебные символы вывода жирного текста);

· p(hp)* — символ р, за которым следует ноль и более экземпляров последовательности hp (например, phphphp).

Иногда требуется найти служебные символы в строках вместо того, чтобы использовать их в описанном специальном контексте. Для этого служебные символы экранируются обратной косой чертой (\). Например, для поиска денежной суммы в долларах можно воспользоваться выражением \$[0-9]+, то есть "знак доллара, за которым следует одна или несколько десятичных цифр". Обратите внимание на обратную косую черту перед $. Возможными совпадениями для этого регулярного выражения являются $42, $560 и $3.

Функции PHP для работы с регулярными выражениями(POSIX-совместимые)

В настоящее время РНР поддерживает семь функций поиска с использованием регулярных Прочие служебные символы выражений в стиле POSIX:

· ereg();

· ereg_replace();

· eregi();

· eregi_replace();

· split();

· spliti();

· sql_regcase().

Описания этих функций приведены в следующих разделах.

Ereg()

Функция ereg() ищет в заданной строке совпадение для шаблона. Если совпадение найдено, возвращается TRUE, в противном случае возвращается FALSE. Синтаксис функции ereg():

int ereg (string шаблон, string строка [, array совпадения])

Поиск производится с учетом регистра алфавитных символов. Пример использования ereg() для поиска в строках доменов .com:

$is_com = ereg("(\.)(com$)", $email); // Функция возвращает TRUE, если $email завершается символами ".com" // В частности, поиск будет успешным для строк // "www.wjgilmore.com" и "someemail@apress.com"

Обратите внимание: из-за Прочие служебные символы присутствия служебного символа $ регулярное выражение совпадает только в том случае, если строка завершается символами .com. Например, оно совпадет в строке "www.apress.com", но не совпадет в строке "www.apress.com/catalog".

Необязательный параметр совпадения содержит массив совпадений для всех подвыражений, заключенных в регулярном выражении в круглые скобки. В листинге 8.1 показано, как при помощи этого массива разделить URL на несколько сегментов.

Листинг 8.1. Вывод элементов массива $regs.

$url = "http://www.apress.com"; // Разделить $url на три компонента: "http://www". "apress" и "com" $www_url = ereg("^(http://www)\.([[:alnum:]+\.([[:alnum:]]+)\.(com$)", $url, $regs); if ($www_url) : // Если переменная $www_url содержит URL Прочие служебные символы echo $regs[0]; // Вся строка "http://www.apress.com" print "
"; echo $regs[1]; // "http://www" print "
"; echo $regs[2]; // "apress" print "
"; echo $regs[3]; // "com" endif;

При выполнении сценария в листинге 8.1 будет получен следующий результат:

http://www.apress.com
http://www
apress
com


documentaombtxh.html
documentaomcbhp.html
documentaomcirx.html
documentaomcqcf.html
documentaomcxmn.html
Документ Прочие служебные символы