strlen($username);
Имя пользователя может содержать ASCII, Unicode или оба.
Пример:
Jam123 (ASCII) - 6 символов
ابت (Unicode) - 3 символа, но strlen возвращает 6 байтов, поскольку юникод равен 2 байта на символ.
Jam ت (Unicode и ASCII) - 5символы (3 ASCII и 2 Unicode, хотя у меня только один символ Unicode)
Имя пользователя во всех случаях не должно превышать 25 символов и должно быть не менее 4 символов.
Моя основная проблема заключается в том, что когда я смешиваю Unicode и ASCII вместе, как я могу отслеживать количество, чтобы оператор условия мог определить, является ли имя пользователя не больше 25 и не меньше 4.
if(strlen($username) <= 25 && !(strlen($username) < 4))
3 символа в Юникоде будут считаться 6 байтами, что вызывает проблемы, поскольку позволяет пользователю иметь имя пользователя из 3 символов Юникода, если количество символов должно быть минимум 4.
Числа всегда будут в ASCII