Строка — чтобы только буквы, цифры и пробелы?

Как проверить строку на наличие ненужных символов, разрешив только буквы, цифры и пробелы? В php такие проверки быстрее всего выполняются с использованием регулярных выражений.

Итак, ищем:

if (!preg_match('/^[a-zA-Z0-9А-Яа-яЁё ]+$/u', $my_string))
  echo "Строка не подходит под условия поиска";
else
  echo "Строка состоит только из букв, цифр и пробелов";

Как это работает?

/^[a-zA-Z0-9А-Яа-яЁё ]+$/u

Все что находится  / между слешей /  и есть регулярное выражение. Оно состоит из  [ шаблона ] , в котором пять интервалов: a-z, A-Z, 0-9, А-Я, а-я, две дополнительные буквы ёЁ, которые не входят в интервалы русских букв, а так же пробел.

^ — обозначает начало строки, а $ — ее конец. Дословно это значит, что строка должна соотвествовать шаблону [a-zA-Z0-9А-Яа-яЁё ] с первого по последний символ. Знак + ставит условие, что в строке будет минимум один символ из шаблона. Пустая строка под такой шаблон уже не попадет, а вот строка из одного пробела — пожалуйста.

Модификатор u включает поддержку UTF-8.

P.S.
Почитать подробнее как работают регулярные выражения можно на phpclub.ru

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>