ПОШУК ПО САЙТУ

PHP: регулярні вирази, функція preg match all

PHP, як і годиться сучасної мовипрограмування, пропонує розробникові набір функцій для використання регулярних виразів. Можна шукати входження рядків в інші рядки за складними критеріями.

preg match all

HTML, CSS, XML та інші формалізовані файли -класичні задачі для застосування функції preg match all. Не менший ефект дає потрібні адреси та, прізвищ, номерів телефонів, e-mail та іншої інформації в неформалізованих текстах.

формат функції

PHP пропонує дві функції пошуку: preg match і preg match all. Перша шукає перше входження шаблону в рядку, друга - все входження. Іноді використовують термін "збіг з шаблоном". У першому випадку результат функції - "рядок збігається з шаблоном", у другому випадку - "в рядку знайдені збіги з шаблоном". Формально термін "збіг" більш точно відображає суть, але природний контекст операції зазвичай - "пошук" інформації. На практиці затребуване і одне, і інше. Нижче розглянуто формат функцій.

php 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 - цифра або не цифри.

php preg match all

Символи повторення позначаються фігурними дужками - {n, m} і відносяться до попереднього символу.

  • n позначає повторення "не менше";
  • m - повторення "не більше".

Синтаксис передбачає безліч варіантів для створення шаблонів, але краще всього починати з азів, тобто з простих, власноруч написаних, в яких складні елементи і комбінації відсутні.

Простіше кажучи, перерахувавши реальні символи,які потрібні, вказавши їх потрібні кількості і врахувавши, що символ "^" відповідає початку, а "$" - кінця рядка, можна створювати простенькі шаблони. Аналізуючи реальні налагоджені регулярні вирази від кваліфікованих фахівців, можна знайти міцні знання для створення складних застосувань preg match all. Арсенал PHP не обмежений тільки цими двома функціями, але вони найчастіше використовуються.

проста практика

Шаблон для цілого числа:

  • "/ [0-9] * /"

Теж шаблон цілого числа, але попереду може бути знак ( "+", "-"), і спереду / ззаду можуть бути зайві прогалини:

  • / ^ [\ S | \ + | \ -] {0,1} [0-9] * /

аналогічно:

  • /^[\s|\+|\-]{0,1}[0-9]*(\.)[0-9]*/ - число з крапкою.
  • /[0-9a-z_-]+@[0-9a-z_^\.]+\.[a-z]{2,3}/ - варіант для розпізнавання e-mail.

Застосування власних шаблонів для preg match all, приклади їх в інтернеті, аналіз коду сторінок сайтів і інші джерела дозволяють сформувати власну бібліотеку шаблонів.

preg match all приклади

Варіантів для пошуку інформації може бутибезліч. Зокрема, наведені останні дві конструкції можна змоделювати інакше. У багатьох випадках перевагу матиме той шаблон, який швидше і точніше забезпечить потрібне збіг. Застосування на PHP preg match all, як і аналогічних функцій на інших мовах, вимагає практики, уваги і попередньої перевірки правильності шаблонів.

</ P>
  • оцінка: