Проверка, находится ли текст в массиве, но не учитывает регистр в PHP

php arrays

76 просмотра

3 ответа

Введение:
Итак, я сделал проверку имени пользователя PHP, если запрошенное имя пользователя находится в массиве.

Проблема:
проблема теперь в том, что если код проверяет, указано ли имя пользователя в массиве, он чувствителен к регистру , есть ли способ удалить if (in_array($username, $special))регистр?

коды:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta http-equiv="x-ua-compatible" content="ie=edge">
    <title>Check Username</title>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.2/css/bootstrap.min.css" integrity="sha384-y3tfxAZXuh4HwSYylfB+J125MxIs6mR5FOHamPBG064zB+AFeWH94NdvaCBm8qnd" crossorigin="anonymous">
  </head>
  <body>
    <br>
    <div class="container">
      <form method="post">
        <input type="text" name="username" placeholder="Username">
        <input type="submit" value="Check">
      </form>
      <?php
        $username = $_POST['username'];
        # this is the Array
        $special = array("Admin", "Mod");
          if ($_SERVER['REQUEST_METHOD'] == 'POST') {
              if (in_array($username, $special)) {
                echo "Username not available!";
              } else {
                echo "The username is available!";
              }
          }
       ?>
    </div>

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.2/js/bootstrap.min.js" integrity="sha384-vZ2WRJMwsjRMW/8U7i6PWi6AlO1L79snBrmgiDpgIWJ82z8eA5lenwvxbMV1PAh7" crossorigin="anonymous"></script>
  </body>
</html>
Автор: virtualAnon Источник Размещён: 08.11.2019 11:10

Ответы (3)


2 плюса

Если вы ищете, чтобы имя пользователя не учитывало регистр (что обычно является нормой), при создании массива добавьте действительные имена пользователей в нижнем регистре, а затем преобразуйте имя пользователя в нижнем регистре.

Что-то в этом направлении должно быть достаточно:

...
// Convert post username to lower
$username = strtolower($_POST['username']);
# this is the Array
// Create the array of valid usernames with lowercase values
$special = array("admin", "mod");
...
Автор: Martin Размещён: 20.08.2016 10:30

0 плюса

Используйте встроенную функцию preg_grep ():

$a= array(
'alpha',
'beta',
'gamma'
);

print_r( preg_grep( "/BeTa/i" , $a ) );
Автор: siddhantsomani Размещён: 20.08.2016 10:33

0 плюса

Сожалею! Я ошибся Вы можете использовать in_arrayкак это.

in_array(strtolower($username), array_map('strtolower', $special));
Автор: Md Mahfuzur Rahman Размещён: 20.08.2016 10:31
Вопросы из категории :
32x32