PHP, як і годиться сучасному мові програмування, пропонує розробнику набір функцій для використання регулярних виразів. Можна шукати входження рядків в інші рядки за складними критеріями.
HTML, CSS, XML та інші формалізовані файли - класичні задачі для застосування функції preg match all. Не менший ефект дає пошук адрес, прізвищ, номерів телефонів, e-mail і іншої інформації в неформалізованих текстах.
Формат функції
PHP пропонує дві функції пошуку: preg match і preg match all. Перша шукає перше входження шаблону в рядку, друга - всі входження. Інколи використовують термін "збіг з шаблоном". У першому випадку результат функції - "рядок збігається з шаблоном", у другому випадку - "у рядку знайдені збіги з шаблоном". Формально термін "збіг" більш точно відображає суть, але природний контекст операції зазвичай - "пошук" інформації. На практиці затребуване і одне, і інше. Нижче розглянутий формат функцій.
Результат функції - число, кількість збігів. Всі знайдені збіги записуються в масив - matches. У випадку функції preg match all можна вказати порядок сортування масиву: PREG_PATTERN_ORDER; PREG_SET_ORDER. Сортування по першому варіанту групує результати пошуку за номером регулярного виразу (значення за замовчуванням). У другому випадку результати групуються за місцем їх знаходження в рядку.
Символ - елемент шаблон
Важливо пам'ятати, що шаблон оперує символами. Програмування вже давно забув, що таке тип даних "символ". Сучасні мови не опускаються нижче поняття "рядок", але щодо шаблону треба розуміти: тут маніпулюють символами.
Побудова шаблону - це, насамперед, вказівку потрібній послідовності символів. Якщо це чітко засвоїти, то помилок в шаблоні не буде. У всякому випадку, буде набагато менше. а - це конкретний елемент шаблону - символ. a-z - це елемент шаблон, теж один символ, але тільки із значенням від a до z - вся латиниця в нижньому регістрі. 0-9 - це одна цифра, причому будь-яка, а ось 1-3 - тільки 1 2 або 3. Регістр в шаблоні важливий. Перший та останній символи шаблону мають велике значення. Можна вказати, з чого починається шаблон і чим закінчується.
Шаблон функції
PHP preg match all використовує стандартний синтаксис регулярних виразів. Квадратні дужки позначають один із символів, який в них вказано: [abc]тільки символи a, b, c. [^ABC]всі, крім символів A, B, C. w і W - текстовий чи не текстовий символ. s і S - пробіл або не пробільний символ. d і D - цифра або не цифра.
Символи повторення позначаються фігурними дужками - {n,m} і відносяться до попереднього символу. n позначає повторення "не менше"; m - повторення "не більше". Синтаксис передбачає безліч варіантів для створення шаблонів, але краще всього починати з азів, тобто з простих, власноруч написаних, в яких складні елементи та комбінації відсутні. Простіше кажучи, перерахувавши реальні символи, які потрібні, вказавши їх потрібні кількості та врахувавши, що символ "^" відповідає початку, а "$" - кінця рядка, можна створювати простенькі шаблони. Аналізуючи реальні налагоджені регулярні вирази від кваліфікованих фахівців, можна здобути міцні знання для створення складних застосувань preg match all. Арсенал PHP не обмежується лише цими двома функціями, але вони найчастіше використовуються.
Проста практика
Шаблон для цілого числа: "/[0-9]*/" Теж шаблон цілого числа, але спереду може бути знак ("+", "-"), і спереду/ззаду можуть бути зайві прогалини: /^[s|+|-]{01}[0-9]*/ Аналогічно: /^[s|+|-]{01}[0-9]*(.)[0-9]*/- число з крапкою. /[0-9a-z_-]+@[0-9a-z_^.]+.[a-z]{23}/- варіант для розпізнавання e-mail. Застосування шаблонів для preg match all, приклади їх в інтернеті, аналіз коду сторінок сайтів та інші джерела дозволяють сформувати власну бібліотеку шаблонів.
Варіантів для пошуку інформації може бути безліч. Зокрема, наведені останні дві конструкції можна змоделювати інакше. У багатьох випадках перевагу матиме той шаблон, який швидше і точніше забезпечить потрібний збіг. Застосування на PHP preg match all, як і аналогічних функцій на інших мовах, вимагає практики, уваги і попередньої перевірки правильності шаблонів.