Регулярні вирази в php (Практична робота № 6)

Страницы работы

Содержание работы

Практична робота №6 Регулярні вирази в php

Загальна інформація

Регулярний вираз (regular expression, regexp, регексп) - механізм, що дозволяє задати шаблон для рядка і здійснити пошук даних, відповідних цьому шаблону в заданому тексті. Крім того, додаткові функції по роботі з РВ дозволяють отримати знайдені дані у вигляді масиву рядків, провести заміну в тексті за шаблоном, розбиття рядка за шаблоном і тому подібне Проте головною їх функцією, на якій засновані всі останні, є саме функція пошуку в тексті даних, відповідних шаблону, описаному в синтаксисі регулярних виразів.

Дуже часто регулярні вирази використовуються для того, щоб перевірити, чи є даний рядок рядком в необхідному форматі. Наприклад наступний regexp призначений для перевірки того, що рядок містить коректну e-mail адресу:

/^w+([.w]+)*w@w((.w)*w+)*.w{2,3}$/

Регулярні вирази прийшли до нас з Unix і Perl. У PHP існує два різні механізми для обробки регулярних виразів:

POSIX і Perl-сумісні. Їх синтаксис багато в чому схожий, проте Perl-сумісні регулярні вирази потужніші і, до того ж, працюють набагато швидше (в деяких випадках до 10 разів швидше).

Суттю механізму регулярних виразів є те, що вони дозволяють задати шаблон нечіткого пошуку по тексту. Наприклад, якщо перед вами стоїть завдання знайти в тексті певне слово, то з цією задачай добре справляються і звичайні функції роботи з рядками. Наприклад, необхідно знайти в тексті інформацію, про яку вам відомо тільки те, що це "3 або 4 цифри після яких через пропуск йде 5 заголовних латинських букв", то ви зможете зробити це дуже просто, за допомогою наступного регулярного виразу:

/d{3,4}s[A-Z]{5}/

Синтаксис регулярних виразів

Регулярні вирази, як вже було сказано вище, є рядком.

Рядок завжди починається з символу роздільника, за яким слідує безпосередньо регулярний вираз, потім ще один символ роздільника і потім  список модифікаторів. Як символ роздільника зазвичай використовується слеш ('/'). Таким чином в наступному регулярному виразі: /d{3}-d{2}/m символ '/' є роздільником, рядок 'd{3}-d{2}' - безпосередньо регулярним виразом, а символ 'm', розташований після другого роздільника - це модифікатор.

Основою синтаксису регулярних виразів є той факт, що деякі символи, що зустрічаються в рядку розглядаються не як звичайні символи, а як що мають спеціальне значення (т.з. метасимволи). Саме це рішення дозволяє працювати всьому механізму регулярних виразів. Кожен метасимвол має свою власну роль в синтаксисі регулярних виразів.

Існує безліч символів, які утворюють метасимволи в парі із зворотним слешем. Як правило подібні пари використовуються для того, щоб показати, що на цьому місці в рядку повинен знаходитися символ, з кодом, який не має відповідного йому зображення або ж символ, що належить якійсь певній групі символів. Нижче приведені деякі найбільш вживані.

Шаблон

Відповідність

x?

нуль або один символ ‘x’

x*

нуль або більше символів ‘x’

x+

один або більше символів ‘x’

.*

нуль або більше будь-яких символів

.+

один або більше будь-яких символів

{m}

‘m’ символів

[]

символи, взяті в []

[^]

символи, окрім взятих в []

[0-9]

будь-яка цифра від ’0′ до ’9′

[a-z]

будь-яка буква від ‘a’ до ‘z’

[^0-9]

будь-який символ, який не знаходиться між ’0′ та ’9′

[^a-z]

будь-який символ, який не знаходиться між ‘a’ та ‘z’

/^…/

перший символ в рядку

/…$/

останній символ в рядку

\d

одна цифра, те саме, що і [0-9]

\d+

одна або більше цифр, те саме, що і [0-9]+

\D

одна не-цифра, те саме, що і [^0-9]

\D+

одна або більше не-цифр, те саме, що і [^0-9]+

\w

один alphanumeric символ (латинска буква або цифра), те саме, що і [a-zA-Z0-9]

\w+

один або більше alphanumeric-символів, те саме, що і [a-zA-Z0-9]+

\W

один не-alphanumeric символ, те саме що і [^a-zA-Z0-9]

\W+

один або більше не-alphanumeric символ, те саме що і [^a-zA-Z0-9]+

\s

один space символ (пробіл, табуляція, новий рядок), те саме що і [\n\t\r\f]

\s+

один або більше space символів, те саме що і [\n\t\r\f]

\S

один не-space символ, те саме що і [^\n\t\r\f]

\S+

один або більше не-space символів, те саме що і [^\n\t\r\f]+

a|b|c

‘a’ або ‘b’ або ‘c’

abc

підрядок “abc”

(pattern)

() запам’ятовуе группу символів, призначаючи їх змінним $1, $2 і т.д. Див. приклади нижче.

/pattern/i

ігнорувати регістр букв

Приклад

Опис

~/php/;

перевіряє, чи є в рядку $str підрядок “php”

~/^php/;

перевіряє, чи починається рядок із підрядка “php”

~/php$/;

перевіряє, чи закінчується рядок на підрядок “php”

~/c|g|i/;

перевіряє, чи містить рядок символ ‘c’ або ‘g’ або ‘i’

~/cg{2,4}i/;

перевіряє, чи містить рядок символ ‘c’, слідуючі відразу за ним 2-4 символи ‘g’, за якими слідує символ ‘i’

~/cg*i/;

перевіряє, чи містить рядок символ ‘c’, слідуючі за ним 0 або більше символів ‘g’, за якими слідує символ ‘i’

~/c..i/;

перевіряє, чи містить рядок символ ‘c’, і символ ‘i’, розділені двома будь-якими буквами

~/[cgi]/;

перевіряє, чи містить рядок один із символів ‘c’, ‘g’ або ‘i’

~/\d/;

перевіряє, чи містить рядок цифру

~/\W/;

перевіряє, чи містить рядок символи, які не є буквами латинського алфавіта та цифрами

Завдання

1.  Розробити скрипт реєстрації користувачів, що обробляє дані форми. Необхідно передбачити попередню перевірку на коректність заповнення даних. Обов’язково передбачити перевірку всіх полів введення. Отримані дані записати у файл даних.

2.  Створити скрипт, що обробляє html-файл та виводить у таблицю всі гіперпосилання та відповідні їм ідентифікатори.

Похожие материалы

Информация о работе

Тип:
Методические указания и пособия
Размер файла:
72 Kb
Скачали:
0