Работаем с регулярными выражениями: preg_match() и preg_match_all() на простых примерах
preg_match()
Функция preg_match()
возвращает количество найденных соответствий. Это может быть 0
(совпадения не найдены) и 1
, поскольку preg_match()
прекращает свою работу после первого найденного совпадения.В функцию передается три аргумента: регулярное выражение, строка для поиска и переменная для сохранения совпадений
Проверяем на пробелы (пробелы запрещаем):
PHP
if (preg_match('/\s/', $check)) {
$errors[] = 'Слово не должно содержать пробелы';
}
// если есть пробелы, вернет 1, и, соответственно,
// сработает условие
Определяем, содержит ли переменная одну строчную или одну заглавную букву (буквы обязательны):
PHP
$pattern = '/(?=.*[a-z])(?=.*[A-Z])/';
if (!preg_match($pattern, $check)) {
$errors[] = 'Слово должно содержать одну строчную или одну заглавную букву';
}
// если буквы отсутствуют вернет 0 (не TRUE), и, соответственно,
// сработает условие
preg_match_all()
Функция preg_match_all()
возвращает количество совпадений регулярного выражения (может быть нулем) либо FALSE
, если во время выполнения возникли какие-либо ошибки. В функцию передается три аргумента: регулярное выражение, строка для поиска и переменная для сохранения совпадений.
Проверяем на наличие в слове как минимум трех цифр (переменная для сохранения совпадений - $matches
- не используется):
PHP
$pattern = '/\d/';
$check = "Экалыверды";
$minimumNumbers = 3;
$found = preg_match_all($pattern, $check, $matches);
if ($found < $minimumNumbers) {
$errors[] = "Слово должно содержать как минимум $minimumNumbers цифры.";
}
При любом несоответствии, для всех трех случаев, заносим соответствующее предупреждение в массив $errors
.
Комментарии к статье