Суббота, 28.12.2024, 12:45
Приветствую Вас Гость

Меню сайта
Web-программирование
Категории раздела
Наш опрос
Какой браузер Вы используете?
Всего ответов: 1423
Статистика

Анализ веб сайтов
Главная » Статьи » Статьи о PHP

Регулярные выражения
Символы Значение Примеры
Символы, указывающие расположение искомого элемента в строке.
^ Указывает на то, что символы после знака должны находиться в начале строки. ^заголовок
$ Символы до знака должны находиться в конце строки. содержание$
Escape последовательности.
\ . Шаблону соответствует знак точки в строке. Смеркалось\.
\n Символ перевода строки. Строка\nЕще строка
\r Символ возврата каретки. Текст\r
\t Символ табуляции. \tКрасная строка
\v Символ вертикальной табуляции. \vнекоторый текст
Задание группы символов.
[ ] Задают группу символов. Соответствует любому символу из перечисленных в группе. Есть возможность задания диапазона символов с помощью знака - (минус, тире). [а-яa-z_123]
^ В группе символов соответствует отрицанию последующих символов, то есть указывает символы, не соответствующие шаблону. [^\n\t]
. Соответствует любому символу, кроме перевода строки. . оза
Количественные показатели
* Символ перед знаком не присутствует либо повторяется любое число раз. текст\n*дальше текст
? Символ перед знаком встречается ноль или один раз. длинн?ое
+ Предыдующий символ повторяется один или большее число раз. 100+
{n} Символ перед знаком повторяется n-ое число раз. длин{2}оше{3}
{min,max} Задает диапазон числа повторений предыдущего символа. ^ab{3,7}
{min,} Предыдущий символ повторяется min или большее число раз. слово . {5,}
Логическое определение.
| Эффект подобен оператору || (OR) в логическом выражении. раз|два|три
( ) Логическая группировка выражений. (может)+ повторяться

Функции работы с регулярными выражениями.

Необходимо сказать, что PHP располагает как собственным механизмом работы с регулярными выражениями (POSIX), так и заимствованным у другого серверного языка программирования Perl. Внешне их легко различить по названиям функций: функции первого типа начинаются с символов "ereg", а второго - "preg".

Но названия функций не единственное их отличие. Прежде всего они содержат некоторые различия в синтаксисе регулярных выражений. Так, Perl-подобные функии требуют разделители:

$str = "регулярное выражение"; // просто строка
$preg = preg_replace("/р.+е/i", "<i>[вырезано]</i>", $str);
$ereg = eregi_replace("р.+е", "<i>[вырезано]</i>", $str);
echo $preg."<br>".$ereg;

Как видите, мы используем функции замены части строки с помощью регулярных выражений. Обратите внимание на шаблон функции preg_replace : в качестве разделителя здесь выступают слеши, причем после закрывающего разделителя следует модификатор i , указывающий, что шаблон является нечувствительным к регистру. Тот же эффект достигается при использовании POSIX функции с суффиксом i ( ereg i _replace ).

Результат выполнения этих функций одинаков:

[вырезано]
[вырезано]

Функция preg_replace в нашем примере проявила так называемую "жадность", и охватила всю строку, которая начинается с буквы "р" и заканчивается "е". Заставить функцию не "жадничать" помогает модификатор U . В этом случае результат ее выполнения будет:

[вырезано] вы [вырезано] ние

Функция нашла минимальное расстояние между буквами "р" и "е" и заменило его указанной строкой.

Функция eregi_replace также проявила "жадность", но изменить этот порядок уже нельзя, так как в POSIX-функциях не предусмотрено использование модификаторов.

Бегло рассмотрим и другие функции работы с регулярными выражениями.

Функции Синтаксис Описание
ereg, eregi, preg_match функция(pattern, string, [regs]) Ищет в строке string соответствия с регулярным выражением pattern , и сохраняет их в массиве regs (если указано).
preg_match_all preg_match_all(pattern, subject, matches, [order]) Осуществляет глобальное сопоставление с шаблоном, результаты заносит в matches .
split, spliti, preg_split функция(pattern, string, [limit]) Разбивает строку в массив посредством регулярного выражения.
preg_grep preg_grep(pattern, input) Возвращает массив из элементов массива input , соответствующих шаблону pattern .

Примеры на регулярные выражения.

Перевод времени в стандартное время Unix.

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

Как вы понимаете, вручную заниматься этим - сумасшествие, так что напишем сценарий, который будет на первом этапе приводить дату к виду часы:минуты:секунды месяц/день/год , а затем с помощью функции strtotime() переведить эту запись в стандартное время UNIX, которое мы сможем отображать, как захочется.

Самое интересное - первый этап. Он-то нас и интересует в плане использования регулярных выражений.

$str = "12:57:43 - 10.03.02"; // $str содержит некоторую дату
$str = preg_replace("!(\d{2})\.(\d{2})\.(\d{2})!", "\2/\1/\3", $str);
С помощью регулярного выражения мы изменяем формат записи дня, месяца и года, причем каждый этот элемент обособляем скобками. Во втором параметре функции мы ссылаемся на найденные соответствия в скобках.
Категория: Статьи о PHP | Добавил: Rammstein (08.12.2010)
Просмотров: 1260 | Рейтинг: 0.0/0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Реклама
Поиск
Друзья сайта
Топ100- Веб-дизайн free counters