Intereting Posts
Предупреждение: mysqli_fetch_assoc () ожидает, что параметр 1 будет mysqli_result, boolean задан в C: \ xampp \ htdocs \ xyz \ userpanel.php в строке 71 Что такое «фиксированное имя» в Netbeans? Сервер Android и PHP: шифрование и дешифрование данных PHP: что является альтернативой empty (), где строка «0» не считается пустой? Сравнение нескольких многомерных подматриц друг с другом и слияния с порогом подобия как реализовать систему выбора динамической комбинированной коробки Как отображать ошибки для моего MySQLi-запроса? DOM pdf codeigniter: Ошибка класса 'DOMPDF' Перенаправить все HTTP-ссылки на HTTPS для интерфейса в magento Перенаправление заголовка PHP не работает Обработка больших наборов данных через AJAX не приносит никаких преимуществ по скорости Есть ли файлы для чтения-блокировки Apache перед их обслуживанием? Почему корзина пуста после добавления продукта Facebook PHP SDK4 – запрос FQL Рабочие дни (пн-пт) в PHP

preg_match () и имя пользователя

function isUserID($username) { if (preg_match('/^[az\d_]{2,20}$/i', $username)) { return true; } else { return false; } } 

Легкий …, у меня есть это, вы можете объяснить, что он проверяет? Я знаю, что он проверяет, имеет ли имя пользователя длину от 2 до 20, что еще? благодаря

Он ищет текст, содержащий только буквенно-цифровые и символы подчеркивания длиной от 2 до 20 символов.

 / ^ [Аг \ d _] {2,20} $ / я
 

| |

| |

|| i: нечувствительность к регистру

| |

| /: конец регулярного выражения

| |

$: конец текста

| | || {2,20}: повторяется от 2 до 20 раз

| | |]: группа концевых символов

| | _ : нижнее подчеркивание

| \ d: любая цифра

az: 'a' через 'z'
|| [: начать группу символов
| ^: начало текста
/: запуск регулярного выражения

 /^[az\d_]{2,20}$/i 

Скремблирование:

/ является разделителем регулярных выражений; вы можете выбрать все, что захотите, но наиболее часто встречающаяся косая черта.

^ означает «начало начала ввода»: следующее выражение должно быть в начале для соответствия регулярному выражению.

[az\d_] – класс символов; это означает «любой символ между квадратными скобками»; обратная косая черта, объединенная с d, является ярлыком для «цифр», а тире – включенным диапазоном; таким образом, класс символов говорит «любая буква или цифра или символ подчеркивания».

{2;20} – квантификатор, который говорит, что предыдущее выражение (класс символов) должно повторяться от 2 до 20 раз.

$ означает «конец конца ввода», аналогичный ^.

Другое / завершает сам регулярное выражение; Далее следуют варианты шествия, в этом случае i , что означает «нечувствительность к регистру».

Он проверяет, чтобы имя пользователя состояло из 2-20 символов, которые являются буквами (в верхнем или нижнем регистре с помощью флага i ), номерами или символом подчеркивания.

Это может быть сокращено двумя способами: во-первых, конструкция if не нужна. Во-вторых, вы можете использовать \w как замену тем же символам, поэтому:

 function isUserID($username) { return preg_match('/^\w{2,20}$/', $username); } 

Он буквально проверяет, состоит ли $username из последовательности от 2 до 20 символов az , AZ (из-за флага i для нечувствительности к регистру), 09 (для \d ) и _ .

Он также проверяет, содержит ли он какие-либо символы, кроме алфавита, az и AZ, цифры 0-9 и _.

Или вы могли бы сказать, проверяя, что он содержит только буквенно-цифровые символы и _.

Это также можно переписать, чтобы быть более простым: preg_match возвращает int, поэтому нет причин использовать шаблон «return false, return true».

 function isUserID($username){ return (bool)preg_match('/^[az\d_]{2,20}$/i', $username); } 

Сделал бы то же самое.

Кроме того, \w означает то же самое, что и эти символы. Буквы, цифры и символ подчеркивания. Так что даже лучше было бы

 function isUserID($username){ return (bool)preg_match('/^[\w]{2,20}$/i', $username); } 

Он проверяет нечувствительное к регистру буквенное слово длиной 2-20 символов, состоящее из букв, цифр и _