strlen($username);
Run Code Online (Sandbox Code Playgroud)
用户名可以携带 ASCII、Unicode 或两者。
例子:
Jam123 (ASCII) - 6 个字符
???(Unicode) - 3 个字符,但 strlen 返回 6 个字节,因为 unicode 是每个字符 2 个字节。
果酱?(Unicode 和 ASCII) - 5 个字符(3 个 ASCII 和 2 个 Unicode,即使我只有一个 unicode 字符)
在所有情况下,用户名都不应超过 25 个字符,并且不应少于 4 个字符。
我的主要问题是将 Unicode 和 ASCII 混合在一起时,我如何跟踪计数以便条件语句可以决定用户名是否不超过 25 且不小于 4。
if(strlen($username) <= 25 && !(strlen($username) < 4))
Run Code Online (Sandbox Code Playgroud)
unicode 中的 3 个字符将被计为 6 个字节,这会导致麻烦,因为当字符最少为 4 时,它允许用户拥有 3 个 unicode 字符的用户名。
数字将始终为 ASCII
使用mb_strlen(). 它负责处理 unicode 字符。
例子:
mb_strlen("Jam?", "UTF-8"); // 4
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3248 次 |
| 最近记录: |