include("compteur.php"); ?>
Урок 14. Регулярные заявки.Этот урок немного не вписывается в логическую цепь наших занятий, а был создан "под давлением общественности", то есть по просьбам читателей, и будет посвящен регулярным выражениям и функциям работы с ними. Наверное, мои расчеты, что статьи Александра Грималовского "Регулярные выражения" будет достаточно для понимания этой темы, оказались неверны. Итак, надеясь, что вы уже прочитали вышеуказанную статью, начинаем сегодняшний урок. Сами регулярные выражения не являются новинкой, превнесенной PHP. В том или ином виде они используются уже достаточно большой срок и являются очень мощным механизмом работы со строковыми данными. Регулярное выражение представляет из себя некий шаблон, который используется для различных действий в зависимости от функции, использующей это регулярное выражение. Для задания шаблона используются специальные символы. Ниже представлена краткая таблица специальных символов и их значений.
Функции работы с регулярными выражениями.Необходимо сказать, что PHP располагает как собственным механизмом работы с регулярными выражениями (POSIX), так и заимствованным у другого серверного языка программирования Perl. Внешне их легко различить по названиям функций: функции первого типа начинаются с символов "ereg", а второго - "preg". Но названия функций не единственное их отличие. Прежде всего они содержат некоторые различия в синтаксисе регулярных выражений. Так, Perl-подобные функии требуют разделители:
Как видите, мы используем функции замены части строки с помощью регулярных выражений. Обратите внимание на шаблон функции preg_replace: в качестве разделителя здесь выступают слеши, причем после закрывающего разделителя следует модификатор i, указывающий, что шаблон является нечувствительным к регистру. Тот же эффект достигается при использовании POSIX функции с суффиксом i (eregi_replace). Результат выполнения этих функций одинаков:
Функция preg_replace в нашем примере проявила так называемую "жадность", и охватила всю строку, которая начинается с буквы "р" и заканчивается "е". Заставить функцию не "жадничать" помогает модификатор U. В этом случае результат ее выполнения будет:
Функция нашла минимальное расстояние между буквами "р" и "е" и заменило его указанной строкой. Функция eregi_replace также проявила "жадность", но изменить этот порядок уже нельзя, так как в POSIX-функциях не предусмотрено использование модификаторов. Бегло рассмотрим и другие функции работы с регулярными выражениями.
Примеры на регулярные выражения.Перевод времени в стандартное время Unix.Предположим, у нас в базе данных или в другом источнике хранится дата
в следующем формате: Как вы понимаете, вручную заниматься этим - сумасшествие, так что напишем
сценарий, который будет на первом этапе приводить дату к виду Самое интересное - первый этап. Он-то нас и интересует в плане использования регулярных выражений.
С помощью регулярного выражения мы изменяем формат записи дня, месяца и года, причем каждый этот элемент обособляем скобками. Во втором параметре функции мы ссылаемся на найденные соответствия в скобках. Вот как это происходит:
На этом этапе мы получем дату "12:57:43 - 03/10/02". Теперь доводим это до конца.
Теперь можно использовать переменную $time, как заблагорассудится. На этом и закончим наш урок. Встретимся на следующем! |