#php #string #yii
#php #строка #yii
Вопрос:
как посчитать числовой символ в сочетании с string
символом в php? если я использую strlen
, это только считается string
. Я хочу ограничить username
вводимое значение только 20 символами, если я ввожу только 20 или более string
, этот код работает, но если я ввожу (например: Admin123Admin123Admin123), это не работает, мой ввод проверки завершается ошибкой.
у меня есть код в useraccount
контроллере yii 2, подобный этому :
// new user
if ( $username != '' amp;amp; $password != '' amp;amp; intval($group) > 0 amp;amp; !$exist)
{
$myFunctions = new userFunctions;
$exist = $myFunctions->isUserNameExist( $username );
$isValid = $myFunctions->isValidPassword( $password );
$checkUsername = strlen($username);
// $temp = str_split($username); // Convert a string to an array by each character
// // if don't want the spaces
// $temp = array_filter($temp); // remove empty values
// $checkUsername = count($temp);
if ( $isValid == 0 amp;amp; !$exist)
{
$result = $myFunctions->saveNewUser( $username, $password, $group, $expired );
$error = ( $result ) ? 0 : 1;
}
else if( $exist )
{
$error = 3;
}
else $error = 2;
}
}
echo yiihelpersJson::encode(['result' => $result, 'error' => $error, 'checkUsername' => $checkUsername ]);
это мой код в поле зрения :
function saveNewUsers()
{
$.ajax({
type :'POST',
dataType : 'json',
data : { id: $('#hiUserID').val(), username : $('#txtUsername').val(), password: $('#txtPassword1').val(), group: $('#cbUserGroup').val(), expired: $('#cbExpired').val() },
url : '" . Yii::$app->getUrlManager()->createAbsoluteUrl('useraccount/saveuser') . "',
success : function(response) {
if ( !response.result ) {
if ( response.error == 2 )
{
$('#errorMessageUser').html(DecodeEntities('{$myLabels[20]}.')).show();
}
else if( response.error == 3 )
{
$('#errorMessageUser').html(DecodeEntities('{$myLabels[56]}.')).show();
}
else if( response.checkUsername > 20)
{
$('#errorMessageUser').html(DecodeEntities('{$myLabels[57]}.')).show();
}
else $('#errorMessageUser').html(DecodeEntities('{$myLabels[22]}.')).show();
}
else {
$('#errorMessageUser').html('').hide();
$('#myUserModal').modal('hide');
$.pjax.reload({container:'#myPjax',timeout:false});
}
}
});
}
итак, как считать числовой и строковый символы в php? я действительно новичок в php, спасибо за помощь, и я надеюсь, что здесь есть предложения от наших программистов. Извините за мой плохой английский.
Комментарии:
1. strlen не работает для подсчета числовых значений.
2. Покажите пример, как у меня.
Admin123Admin123Admin123
24 символа, поэтому он не должен работать..
Ответ №1:
я уже нашел ответ, да, спасибо за chris 85, strlen не проблема, но проблема в контроллере, это я меняю свой код :
if ( $username != '' amp;amp; $password != '' amp;amp; intval($group) > 0 amp;amp; !$exist)
{
$myFunctions = new userFunctions;
$exist = $myFunctions->isUserNameExist( $username );
$isValid = $myFunctions->isValidPassword( $password );
$checkUsername = strlen($username);
// var_dump($checkUsername); die();
if ( $isValid == 0 amp;amp; !$exist amp;amp; $checkUsername <= 20)
{
$result = $myFunctions->saveNewUser( $username, $password, $group, $expired );
$error = ( $result ) ? 0 : 1;
}
elseif ($checkUsername > 20 )
{
$error = 99;
}
else if( $exist )
{
$error = 3;
}
else $error = 2;
}
и в таком виде :
function saveNewUsers()
{
$.ajax({
type :'POST',
dataType : 'json',
data : { id: $('#hiUserID').val(), username : $('#txtUsername').val(), password: $('#txtPassword1').val(), group: $('#cbUserGroup').val(), expired: $('#cbExpired').val() },
url : '" . Yii::$app->getUrlManager()->createAbsoluteUrl('useraccount/saveuser') . "',
success : function(response) {
if ( !response.result ) {
if ( response.error == 2 )
{
$('#errorMessageUser').html(DecodeEntities('{$myLabels[20]}.')).show();
}
else if( response.error == 3 )
{
$('#errorMessageUser').html(DecodeEntities('{$myLabels[56]}.')).show();
}
else if( response.error == 99)
{
$('#errorMessageUser').html(DecodeEntities('{$myLabels[57]}.')).show();
}
else $('#errorMessageUser').html(DecodeEntities('{$myLabels[22]}.')).show();
}
else {
$('#errorMessageUser').html('').hide();
$('#myUserModal').modal('hide');
$.pjax.reload({container:'#myPjax',timeout:false});
}
}
});
}
спасибо за помощь, наконец-то я получил ответ.