Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lab1_php.doc
Скачиваний:
3
Добавлен:
27.08.2019
Размер:
113.15 Кб
Скачать

5 Регулярные выражения

Регулярные выражения используются для сложных манипуляций со строками. Существует несколько типов регулярных выражений, различающихся по синтаксису, например регулярные выражения языка Perl или регулярные выражения, определенные в стандарте POSIX 1003.2. В языке PHP можно использовать регулярные выражения этих типов. Рассмотрим кратко синтаксис POSIX (для дополнительной информации см. man 7 regex).

Некоторые специальные символы:

. – один любой символ.

? – предыдущий символ может повторяться от 0 до 1 раз.

* – предыдущий символ может повторяться 0 и более раз.

+ – предыдущий символ может повторяться 1 и более раз.

[ ] – список символов, соответствует любому отдельному символу из списка. Если список начинается с ^, то такое выражение соответствует любому отдельному символу не из списка. [a-zA-Z] –любой символ латинского алфавита. [^0-9] – любой символ, кроме цифр.

{ } – интервал повторения предыдущего символа: {n} – предыдущий символ повторяется ровно n раз, {n, m} – предыдущий символ может повторяться от n до m раз включительно (n не больше m), {n,} – предыдущий символ может повторяться n и более раз.

( ) – регулярное выражение внутри скобок воспринимается как один символ.

| – логическое ИЛИ.

^ – начало строки.

$ – конец строки.

\ – отменяет специальное значение последующего символа.

Примеры:

^$ – пустая строка,

[-+]?[0-9]+ – целое число.

[0-7]+ – восьмеричное число.

[0-9a-fA-F]+ – шестнадцатеричное число.

[0-9a-fA-F]+[hH]{1} – допустимая запись шестнадцатеричного числа в ассемблере.

0(x|X)[0-9a-fA-F]+ – допустимая запись шестнадцатеричного числа в Си.

Поиск регулярного выражения – ereg.

int ereg (string pattern, string str [, array &regs])

Просматривает строку str в поиске соответствий регулярному выражению pattern (учитывается регистр символов). Возвращает длину подстроки, совпавшей с регулярным выражением pattern, либо false, если совпадений нет. Если задан третий аргумент, найденные совпадения помещаются в массив regs. Элемент $regs[1] будет содержать подстроку, соответствующую части регулярного выражения в первых скобках, $regs[2] – подстроку, соответствующую части регулярного выражения во вторых скобках. Элемент $regs[0] будет содержать подстроку, совпавшую со всем регулярным выражением.

В примере 17 ищется дата в ISO формате (YYYY-MM-DD) и выводится в формате DD.MM.YYYY:

Пример 17 Использование ereg().

<?php

if (ereg ("([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})", $date, $regs)) {

echo "$regs[3].$regs[2].$regs[1]";

} else {

echo "неправильный формат даты: $date";

}

?>

Пример 18 Проверка корректности записи идентификатора переменной языка PHP.

<?php

$php_vars = array('$_RighT_1', '$8_wrong', 'C_right_8');

$reg_exp_php_var = '^\$[A-Za-z_][A-Za-z0-9_]*$';

foreach($php_vars as $item){

if(ereg($reg_exp_php_var, $item))

echo $item;

else

echo $item . ' не ';

echo "правильная запись идентификатора переменной языка PHP\n";

}

?>

Резултат работы:

$_RighT_1 правильная запись идентификатора переменной языка PHP

$8_wrong не правильная запись идентификатора переменной языка PHP

C_right_8 не правильная запись идентификатора переменной языка PHP

12

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]