在我的网站上,用户注册后,他们可以随时更改用户名。最小字符数为6,最大数量为25。
这里有一些用于检查长度和删除字符的编码:
$users_new_name = strip_tags($_POST['new_name']);
$new_name = preg_replace("/[^0-9a-zA-Z -]/", "", $users_new_name);
// Check Length
if (ctype_space($new_name)) {
$message = die('<span class="Fail">Error: Name Must Be At least 6 Characters Long!</i></span>');
}
if(strlen($new_name) < 6) {
$message = die('<span class="Fail">Error: Name Must Be At least 6 Characters Long!</i></span>');
}
if(strlen($new_name) > 25) {
$message = die('<span class="Fail">Error: Name Can\'t Be More Than 25 Characters Long!</i></span>');
}
我遇到的问题是如果你输入5个空格然后输入一个字母或数字,那么新的名字就是那个字母或数字;或者如果您输入一个字母或数字,则输入5个空格。我怎么能防止这种情况发生?
以下是示例
的屏幕截图答案 0 :(得分:1)
我不明白为什么标签会在POST中。
如果你改变,空格就成了一个问题:
$users_new_name = strip_tags($_POST['new_name']);
要
$users_new_name = trim(strip_tags($_POST['new_name']));
或理想情况下(不需要条带标签):
$users_new_name = trim($_POST['new_name']);
将RegEx表达式更改为/[^0-9a-zA-Z]/
以消除空格和短划线。
答案 1 :(得分:1)
听起来你需要trim()
来修剪用户名中的任何空格。见http://php.net/trim
ltrim()
会修剪任何前导空格。 rtrim()
将修剪字符串末尾的任何空格。
答案 2 :(得分:0)
这很简单,而且我以前在系统上必须处理这些事情。
如果您首先调用此preg_replace,则其余代码应该捕获它;
$name = preg_replace('~[\s]+~', '', $name);
这只是检查是否有空格或多个空格,然后用一个空格替换。
所以&#34;升&#34;将返回&#34;升&#34; - 最少5个字符。
在这周围使用trim()你应该让它工作到可接受的东西(取决于你接受的定义 - 在我的用例中工作)