Від автора: моя племінниця вирішила стати письменником-фантастом. Це девятилетнее дарування кілька днів намагалася придумати сюжет майбутнього шедевра, не забуваючи попутно «катувати» і своїх родичів. В результаті вона нафантазувала світ, в якому замість букв використовуються цифри. Тоді в цьому світі будуть в PHP тільки цифри?
Наша реальність
Але повернемося в нашу реальність, де цифри – це є цифри, а літерами пишуть слова. І знову сьогодні мова піде про регулярних виразах. Тільки з їх допомогою можна правильно просіяти вміст і отримати шуканий рядок, поєднання символів або просто цифри. Пошуком останніх і займемося. Але спочатку визначимося, що ми хочемо зробити з знайденими цифрами.
З допомогою PHP залишаємо тільки цифри:
Тепер розберемося, що робить функція preg_replace(). Першим аргументом вона приймає шаблон, за яким буде відбуватися пошук значень у рядку $str1 (третій аргумент) і потім замінювати знайдене на другий аргумент (пробіл).
Розглянемо ближче регулярку: /[^0-9]/
В шаблоні зазначено, що потрібно знаходити всі символи, крім цифр. У свою чергу preg_replace() знайшла значення, відповідні регулярному виразу і замінила на пробіл. Таким чином ми реалізували enter тільки цифр з допомогою PHP.
Інші приклади
«Зануримося» глибше і модифікуємо шаблон. Для цього використовуємо синтаксис регулярних виразів метасимволи: \d – означає будь-яку цифру, \D – позначає будь-який символ, який не є цифрою.
Застосуємо ці метасимволи в наступних прикладах. У першому з них ми задіємо ще одну функцію PHP, яка призначена для роботи з регулярками.
Або так:
Зрозуміло, що в цьому прикладі використовується регулярний вираз PHP тільки цифри залишає в рядку. Тим не менш, такий варіант реалізації теж затребуваний. Його можна застосовувати для перевірки дотримання користувачами синтаксису пароля, який встановлюється під час реєстрації.
Але повернемося до нової функції – preg_match(). На відміну від попередньої ця нічого не змінює і не вирізає. Вона лише «відповідає», присутній у рядку $str1значение, яке підходить під регулярний вираз, передане в якості першого аргументу.
Також з допомогою наведених прикладах регулярок можна в PHP залишати тільки цифри в рядку. Розглянемо шаблони ближче:
/[^\d]/
/[\D]/
Найкоротшим з них є другий варіант. У першому додатково використовується символ заперечення («^»). Якщо він вказаний початку шаблону, то це говорить про те, що потрібно шукати все крім зазначених далі діапазонів символів.
Обрізання рядків
Але повернемося до виконання нашого головного завдання – в тексті за допомогою PHP залишити тільки букви і цифри. Тепер попрацюємо з діапазонами. В самому першому скрипті ми використовували регулярний вираз, в якому не застосовувалися модифікатори: /[^0-9]/
Тобто, всі символи, крім цифр від нуля і до 9. А можна звузити діапазон? Давайте пробувати методом «тику» .
Ми бачимо, що це працює, і нам вдалося з допомогою функції PHP preg replace залишити лише цифри у заданому діапазоні. Але давайте розвинемо успіх, і рушимо в дослідженнях далі. Ось ще один приклад:
Нам вдалося з допомогою PHP залишити в рядку тільки цифри і точки. Зверніть увагу, що для визначення точки в шаблоні ми екранували її правим слешем. Так як точка є метасимволом. Рухаємося ще в нетрі, поки «пре» . Наступний приклад:
Ура! Ми навчилися залишати в рядку тільки латинські букви і цифри c допомогою PHP. У цьому прикладі ми знову використовували діапазон символів, а також один з метасимволів.
Думаю, сьогоднішнього «запливи» у морі регулярних виразів нам вистачить з головою. А моя племінниця вже працює над наступним своїм творінням .