Druzya.org
Возьмемся за руки, Друзья...
 
 
Наши Друзья

Александр Градский
Мемориальный сайт Дольфи. 
				  Светлой памяти детей,
				  погибших  1 июня 2001 года, 
				  а также всем жертвам теракта возле 
				 Тель-Авивского Дельфинариума посвящается...

Библиотека :: Компьютеры и Программирование :: Котеров Д. В. - Самоучитель PHP 4
<<-[Весь Текст]
Страница: из 287
 <<-
 
ть — например, заменить его 
на какую-то строку или, скажем, заключить в кавычки. Это — типичный пример со- 
поставления с заменой. Все эти возможности реализуются в PHP в виде функций, 
которые мы сейчас и рассмотрим. 
Использование регулярных 
выражений в PHP 
Вернемся на минуту опять к практике. Любое регулярное выражение в PHP — это 
просто строка, его содержащая, поэтому функции, работающие с регулярными выра- 
жениями, принимают их в параметрах в виде обычных строк. 
Сопоставление 
bool ereg(string $expr, string $str [,list &$Matches]) 
Функция пытается сопоставить выражение $expr строке $str и в случае удачи воз- 
вращает true, иначе — false. Если совпадение было найдено, то в список 
$Matches (конечно, если он задан) записываются отдельные участки совпадения 
(как 
выделять эти участки на языке RegEx, мы рассмотрим немного позже). Пока скажу 
только, что в $Matches[0] всегда будет возвращаться подстрока совпадения цели- 
ком. 

Глава 22. Основы регулярных выражений в формате RegEx 299 
Сопоставление с заменой 
Если нам нужно не определить, удовлетворяет ли строка выражению, а заменить в 
ней все подстроки, ему удовлетворяющие, на что-то еще, следует воспользоваться 
следующей функцией: 
string ereg_replace(string $expr, strint $str, string $strToChange) 
Эта функция занимается тем, что ищет в строке $str все подстроки, соответствую- 

щие выражению $expr, и заменяет их на $strToChange. В строке $strToChange 
могут содержаться некоторые управляющие символы, позволяющие обеспечить до- 
полнительные возможности при замене. Их мы рассмотрим позже, а сейчас скажу 
только, что сочетание \0 (в PHP эта строка будет записываться как "\\0") будет 
за- 
менено на найденное совпадение целиком. 
Язык RegEx 
Существует несколько разновидностей языков, используемых для записи регулярных 
выражений и работы с ними. У всех них есть много общего, но отдельные части все 

же отличаются. В PHP версии 3 стандартно реализован только один из языков — он 
называется RegEx. 
В четвертой версии интерпретатора поддерживается также и стандарт PCRE 
(Perl-Compatible Regular Expression — Регулярные выражения языка Perl). Его 
выражения несколько более универсальны. Прочитать о формате PCRE можно 
в любой книге по Perl. 
Нужно заметить, что стандарт RegEx — один из самых первых и простых, поэтому он 

не включает некоторые возможности, которые могут иногда потребоваться. 
Перейдем теперь непосредственно к языку RegEx. Вот что он нам предлагает. 
Каждое 
выражение состоит из одной или нескольких управляющих команд. Некоторые из них 
можно группировать (как мы группируем инструкции в программе при помощи фи- 
гурных скобок), и тогда они считаются за одну команду. Все управляющие команды 
разбиваются на три класса: 
r простые символы, а также управляющие символы, играющие роль их "замените- 
лей"; 
r управляющие конструкции (квантификаторы повторений, оператор альтернативы, 
группирующие скобки и т. д.); 
r так называемые мнимые символы (в строке их нет, но, тем не менее, они как бы 
помечают какую-то часть строки — например, ее конец). 

Часть IV. Стандартные функции PHP 300 
Простые символы 
Класс простых символов, действительно, самый простой. А именно, любой символ в 
стро- 
ке на RegEx обозначает сам себя, если он не является управляющим (к управляющим 
сим- 
волам причисляются следующие: ".*?+[]{}|$^"). Например, регулярное выражение 
abcd будет "реагировать" на строки, в которых встречается последовательность 
abcd. 
Отмена действия спецсимволов 
Если же нужно вставить в выражение один из управляющих символов, но только так, 

чтобы он "не действовал", достаточно предварить его обратным слэшем. К примеру, 

если мы ищем строку, содержащую подстроку a*b, то мы должны использовать для 
этого выражение a\*b (опять же, в PHP эта строка будет записываться как 
"a\\*b"), 
поскольку символ * является управляющим (вскоре мы рассмотрим, как он работает).
 
Здесь я хотел бы еще (на этот раз в последний) раз заострить внимание на одной 
де- 
тали. Как вы знаете, для того, чтобы в какую-то строку вставить слэш, 
необходимо 
его удвоить. То есть мы не можем написать 
$a="a\*b" 
но можем 
$a="a\\*b"
 
<<-[Весь Текст]
Страница: из 287
 <<-