Проверочная строка: PHP: <?php if(!eregi("[a-zA-Z0-9]{4,10}", $_POST['login'])) $error .= ERROR_2; ?> Если я введку: xak2', он не выведет ошибку, почему?
А если еще вывести в MSSQL: Код (Text): Warning: mssql_query() [function.mssql-query]: message: Unclosed quotation mark before the character string 'xak2\''. (severity 15) in C:\AppServ\www\reguser.php on line 6
потому что строка соответствует регулярному выражению. PHP: preg_match('~^[a-z0-9]{4,10}$~i', $_POST['login']);
Почему соответствует она длинее 4 и короче 10 как и надо но содержит символ '. В регулярке указаны только a-zA-Z0-9 при этом ошибка не выводится!
xak2 твое регулярное выражение соответствует любой строке, в которой есть от 4 до 10 символов [a-zA-Z0-9] подряд.
xak2 ты ищешь в строке подстроку. чтобы проверять соответствие строки шаблону, нужно сделать так, как написал simpson. смысл ^ в самом начале - она говорит, что речь идет о начале строки, $ - о том, что это конец строки. т.е. рразница в том, что твоя регулярка говорит, что строка должна содержать фрагмент длиной 4-10 символов, маленькие и большие латинские буквы, а регулярка simpson'а говорит, что строка должна состоять из этих символов и быть длиной 4-10 символов.