- •2. Управляющие структуры языка php
- •3. Работа с массивами.
- •4. Ассоциативные массивы
- •5. Создание пользовательских функций, передача параметров функции и области видимости переменных
- •6. Функции для работы со строками
- •7. Функции даты/времени и работы с календарем
- •8. Работа с файлами
- •9. Операции с содержимым файлов
- •10. Работа с каталогами
- •11. Регулярные выражения, сопоставление и поиск с шаблоном.
- •Базовый синтаксис и создание регулярных выражений
- •12. Работа с динамическими изображениями
- •ImageGif (идентификатор, [имя файла])
- •14. Управление интерпретатором php
- •15. Отслеживание сеанса, управление сессиями и cookies.
- •16. Работа с бд mysql
- •17. Объектно-ориентированное программирование, создание классов и объектов, доступ к методам и свойствам объекта.
- •18. Сообщения об ошибках языка
- •18. Структура xml – документа. Правила создания. Конструкции языка. (Подробное описание) Структура документа
- •Определение типа документа (dtd).
- •Объявления
- •Объявление xml
- •Объявление типа документа
- •Где могут храниться dtd
- •Объявления элементов и атрибутов xml документа.
- •22. Свойства и методы элементов документа.
- •23. Типы атрибутов xml документа.
- •25. Обработка xml-документов php скриптами
- •26. Стилевые таблицы xsl. Структура xsl- таблиц. Что такое xsl?
- •Правила xsl
- •Корневое правило
- •Отношения между элементами
- •Приоритеты правил
- •27. Встроенные функции xsl.
- •28.Сценарии xsl.
- •29.Использование атрибутов элементов в xsl.
- •30. Фильтрация элементов в xsl. Фильтрация элементов
11. Регулярные выражения, сопоставление и поиск с шаблоном.
С помощью регулярных выражений можно найти в строке подстроку, удовлетворяющую заданному шаблону и извлечь ее, проверить существует ли заданная строка и т.д.
Базовый синтаксис и создание регулярных выражений
Простейшее регулярное выражение можно записать так: "abc"
Это выражение соответствует любой строке, которая содержит подстроку "abc".
"[abc]"--Этому регулярному выражению соответствует любая строка, содержащая abc либо вместе, либо каждый из них в отдельности. Выражение в квадратных скобках иногда еще называют бракет выражением.
"[а-Я]"--Это выражение соответствует всем буквам русского алфавита, поскольку любые два символа, разделяемые дефисом, задают соответствие диапазону символов, находящихся между ними. Заметьте, что регулярное выражение "[а-Я]" описывает символы как нижнего, так и верхнего регистров, поэтому более подробно это выражение можно записать так: "[а-яА-Я]"
Точно таким же образом задаются регулярные выражения, соответствующие числам:
"[0-9]" или "[0123456789]"
Оба этих выражения эквивалентны и соответствует любой цифре.
Групповой символ
При создании регулярных выражений часто удобно пользоваться групповым символом точки ".", который объединяет два одиночных символа, за исключением символа \n. К примеру: .ок
Это выражение, в частности соответствует строкам "кок", "док", "ток".
Выражение "x.[0-9]"
соответствует строке, содержащей символ x, за которым идет любой другой символ и цифры от 0 до 9. Этому критерию, к примеру, удовлетворяют строки "xy1", "xz2"
Ветви
В регулярном выражении может быть несколько ветвей, которые разделяются символом |, действующим как оператор OR (ИЛИ). "abc|абв"
Исключающее выражение
Для исключения последовательности символов из поиска перед этой ней ставится символ "^": "[^а-я]"
Это регулярное выражение отвечает любому символу, не содержащемуся в диапазоне а-я.
Квалификаторы
Регулярное выражение можно уточнить при помощи квалификаторов - так называются символы +, ?, *. Квалификаторы говорят о том, сколько раз последовательность символов может встретиться в строке и указываются непосредственно после той части выражения, к которой они применяются:
"a+" - хотя бы один а (строки "абв" и "абва" соответствуют этому выражению, а строка "укр" - нет);
"a?" - ноль или один а (строки "абв" и "укр" соответствуют этому выражению, а строка "абва" - нет);
"a*" - ноль или более а (строки "абв" и "абва" и "укр" соответствуют этому выражению).
Границы
Границы - это числа в фигурных скобках, указывающие количество вхождений в строку фрагмента выражения, непосредственно предшествующего границе:
"xy{2}" соответствует строке, в которой за x следует два y;
"xy{2,}" соответствует строке, в которой за x следует не менее 2 y (может быть и больше);
"xy{2,6}" соответствует строке, в которой за x следует от 2 до 6 y;
Для указания количества вхождений не одного символа, а их последовательности, используются круглые скобки:
"x(yz){2,6}" соответствует строке, в которой за x следует от 2 до 6 последовательностей yz;
"x(yz)*" соответствует строке, в которой за x следует ноль и более последовательностей yz;
Подвыражения
Иногда бывает удобно создавать регулярное выражение таким образом, чтобы можно было, к примеру, сказать, что, по крайней мере, за одной из строк "морская", следует точно строка "волна". Для этого регулярное выражение разбивают на подвыражения с помощью круглых скобок:
(морская)*волна
Это выражение соответствует строкам "волна", "морская волна", "морская морская волна" и т.д.
Соответствие началу и концу строки
В регулярном выражении можно указать, должно ли конкретное подвыражение встречаться в начале, в конце строки или и в начале и в конце строки.
Символ ^ соответствует началу строки: "^xy"
Такое выражение соответствует любой строке, начинающейся с xy.
Знак доллара $ соответствует концу строки: "xy$"
Это регулярное выражение соответствует любой строке, заканчивающейся на xy.
Сопоставление со специальными символами
В тех случаях, когда нужно сопоставить выражение строке, в которой встречаются спецсимволы такие, как $, ^, { и т. д., перед ними ставится символ обратной косой черты (\).
Функции для работы с регулярными выражениями
Ereg()
bool ereg(string pattern, string string [, array regs])
Данная функция ищет в строке string соответствие регулярному выражению, заданному в шаблоне pattern. Если соответствия подвыражений с шаблоном будут найдены, то они сохраняются в массиве соответствий regs. При этом $regs[0] содержит копию строки string, $regs[1] содержит подстроку, начинающуюся с первой левой скобки, $regs[2] хранит подстроку, начинающуюся со второй левой скобки и т.д.
Ниже приведен код, преобразующий дату из формата YYYY-MM-DD в формат DD.MM.YYYY.
ereg_replace()
string ereg_replace(string pattern, string replacement, string string)
Эта функция заменяет найденный в строке string шаблон pattern на строку replacement и, если соответствие было найдено, возвращает модифицированную строку.
split()
array split (string pattern, string string [, int limit])
Эта функция возвращает массив строк, которые представляют собой подстроки строки string, образованные в результате разделения строки string на подстроки в соответствии с регулярным выражением pattern. Если указан необязательный параметр limit, то в возвращаемом массиве будет не больше limit элементов, последний из которых содержит неразделенную часть строки.
Эта функция полезна при разделении дат, доменных имен и т.д.