Прошу прощения, если создаю тему в неподобающем разделе и прошу модераторов не наказывать, а перенести по возможности тему в необходимый раздел или дать ссылку на тему для подобных вопросов. Итак, у меня есть следующий кусок кода: Код (Text): <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> <title>Регистрация</title> </head> <form action="index.php" method="post">Логин:<br><input name="login" type="text" maxlength="15"><br>Пароль:<br><input name="password" type="password"><br>Повторите пароль:<br><input name="re_password" type="password"><br><input name="registration" type="submit" value="Зарегистрироваться"></form> <? if (isset($_POST['registration'])) { $login = $_POST['login']; $password = $_POST['password']; $re_password = $_POST['re_password']; if (trim($login) == "" or trim($password) == "" or trim($re_password) == "") { echo "Пожалуйста, заполните все поля!"; } else { if ($password !== $re_password) { echo "Пароли не совпадают!"; } else { if (strlen($login) < 3 or strlen($password) < 3) { echo "Логини пароль должны содержать более 3-х символов!"; } else { if (strlen($login)>15) { echo "Логин должен содеражть не более 15-и символов!"; } else { if (!preg_match("[a-zA-Z0-9]", $login) or !preg_match("[a-zA-Z0-9]", $password)) { echo "Логин и пароль могут содержать только буквы латинского алфавита и цифры!"; } else { } } } } } } ?> <body> </body> </html> В 40-й строчке идёт проверка на то, чтобы значение переменных $login и $password должны состоять только из латинских букв и цифр. Но, чтобы я не вводил скрипт всегда мне выводит Логин и пароль могут содержать только буквы латинского алфавита и цифры! Где я допустил ошибку?
Код (Text): $login = "A_куй"; $password = "A_даблкуй"; if (!preg_match("/[a-zA-Z0-9]/", $login) or !preg_match("[a-zA-Z0-9]", $password)) { echo "Логин и пароль могут содержать только буквы латинского алфавита и цифры!"; } Добавлено спустя 2 минуты 15 секунд: Код (PHP): if (preg_match("/[^a-zA-Z0-9]/", $login) or preg_match("/[^a-zA-Z0-9]/", $password)) { echo "Логин и пароль могут содержать только буквы латинского алфавита и цифры!"; }
Теперь понял. То есть, если я введу 00000ляляля скрипт ничего не заподозрит, так как остановиться на первом же нуле. Тогда как этого избежать?
А что даёт ^? Я понял, что благодаря этому символу мой скрипт адекватно заработал, но что конкретно я изменил добавив этот символ я не понял.