Если вы получаете данные с формыот пользователя, например, для записи в БД или передачу в JSON формате, то часто требуется соблюдать строгий формат данных. Чтобы в одном поле передавались только цифры, во втором алфавит с избранными знаками препинания и т.д.Проверять формат данных проще все с регулярными выражениями. Разберем популярные задачи, в которых мы будем фильтровать входящие данные от пользователя.
Для этого нам понадобится функция замены preg_replace() и trim() - ее рекомендую использовать всегда, чтобы убирать пробелы и переводы строк вначале и в конце строки.
Пусть у нас будет такая форма:
<form method="post">
<input type="text" name="marka" placeholder="Алфавит + пробел" >
<input type="text" name="codes" placeholder="Только цифры">
<input type="text" name="alfav" placeholder="Алфавит + цифры + некоторые символы">
<input type="submit" name="but_register" value="Отправить">
</form>
В placeholder-ах отмечен требуемый формат ввода для пользователя. Теперь сделаем php обработчик формы при ее отправки за счет кнопки but_register.
<?php
if (isset($_POST["but_register"])) {
$marka = preg_replace('/[^а-яА-Яa-zA-Z\s"]/u', '', trim($_POST['marka']));
$codes = preg_replace('/[^0-9]/u', '', trim($_POST['codes']));
$alfav = preg_replace('/[^0-9а-яА-Яa-zA-Z\s\.\,\-\"\']/u', '', trim($_POST['alfav']));
echo 'Алфавит + пробел: '.$marka.'<br>';
echo 'Только цифры: '.$codes.'<br>';
echo 'Алфавит + цифры + некоторые символы: '.$alfav.'<br>';
}
?>
Думаю, принцип работы регулярки здесь понятен - просто указываем в скобках [^] разрешенные символы после ^ и поля будут автоматически фильтроваться. Учтите в этих регулярках учитывается регистр. Чтобы делать проверку без учета регистра, поставьте модификатор i после u (который отвечает за ликвидацию жадности) - '/[^0-9]/ui'
Примеры того, как сработает регулярка:
1. поле, где только алфавит и цифры: Как то, так! )) хе хе хе -> Как то так хе хе хе
2. поле с цифрами: 12 + 2 = 14 (вот так вот!) -> 12214
3. поле с алфавитом и символами: . , - " ' и пробел (\s): Ура! 12 марта: (выходной) ~ а 14, 15 - "обработка 'дзинь". Точно!? - #да -> Ура 12 марта выходной а 14, 15 - "обработка 'дзинь". Точно - да
Вот так вот не замысловатым способом мы можем проверять данные, которые приходят от пользователя. Но если у вас очень строгий формат ввода данных, например регистрация домена, то предусматривать придется гораздо больше - длина полей, проверка на пустоту, trim обрезка, корректность ввода дат, почты + все это дублировать на js перед отправкой.