Проверьте место в строке - PullRequest
0 голосов
/ 03 ноября 2011

Я работаю над страницей регистрации для моего сайта, и я хочу отформатировать поле имени пользователя, чтобы пользователи не могли вводить имя пользователя с пробелом между ними. Например, если пользователь отправляет имя пользователя, например «space man», я хочу изменить его на «space_man». Я работаю с PHP, как мне это сделать.

Ответы [ 6 ]

0 голосов
/ 03 ноября 2011
str_replace(' ', '_', $txtUserName);
0 голосов
/ 03 ноября 2011

Хм, один из лучших способов сделать это - проверить в обоих местах - на клиенте и на сервере.

На клиенте вы должны выполнить проверку с использованием javascript.

obj.value.replace(" ", "_");
alert("Invalid username. Changing space to underscore.");

Сделайте то же самое на стороне сервера в php.

strstr($_POST['username'],' ','_');

Если «пробел» - единственное, что имеет значение для вас, то это можно сделать.Иначе вам придется написать все правила.

0 голосов
/ 03 ноября 2011

Я, конечно, ценю strtr :

strtr($_GET['username'],' ','_');

Это тоже довольно мощно

strtr($_GET['username'],array(' '=>'_',"\t"=>'_'));

str_replace , очевидно, тоже работает.

0 голосов
/ 03 ноября 2011

Это простая замена строки:

$username = str_replace(" ", "_", $username);
0 голосов
/ 03 ноября 2011

str_replace(' ','_',$input);

0 голосов
/ 03 ноября 2011

Взгляните на http://www.php.net/str_replace - я уверен, вы оттуда разберетесь. Конечно, есть еще много вещей, которые вы хотите проверить, поэтому лучше выполнить фильтрацию белого списка (скажем, что вы разрешаете, а не то, что вы не разрешаете), что-то вроде этого регулярного выражения:

if (! preg_match('/^[a-z0-9]{3,32}$/', $_POST['username'])) {
    die('Invalid username'); // of course, dying is not good either, just for the example
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...