Пользователь сайта может зарегистрироваться на сайте, и во время регистрации он может предоставить имя.
Я хочу, чтобы это имя было допустимым именем и не содержало никаких HTML и других фанковых символов. Для этого достаточно strip_tags?
Я нахожу, что нет единой функции для идиотипирования пользовательских входов. Лучше всего смешать несколько:
$val = trim($val); $val = strip_tags($val); $val = htmlentities($val, ENT_QUOTES, 'UTF-8'); // convert funky chars to html entities $pat = array("\r\n", "\n\r", "\n", "\r"); // remove returns $val = str_replace($pat, '', $val); $pat = array('/^\s+/', '/\s{2,}/', '/\s+\$/'); // remove multiple whitespaces $rep = array('', ' ', ''); $val = preg_replace($pat, $rep, $val); $val = trim($val); $val = mysql_real_escape_string($val); // excellent final step for MySQL entry
Regex может хорошо сочетаться с меньшим количеством кода:
^[AZ]'?[- a-zA-Z]( [a-zA-Z])*$
Здесь у нас есть хорошие примеры:
Regex для имен