Как проверить строку на наличие ненужных символов, разрешив только буквы, цифры и пробелы? В 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