Операторы без учета регистра?

#php

#php

Вопрос:

Пожалуйста, простите за невежество, но я очень новичок в PHP и нигде не смог найти то, что мне нужно. Итак, я пришел сюда, где, я знаю, я получу ответ.

Что я хочу сделать, так это учесть любые несоответствия регистра букв в данных, которые я загружаю (которые я не создавал).

Например, я хотел бы, чтобы следующий оператор if работал, даже если $ var записывается как ‘hello’, ‘ЗДРАВСТВУЙТЕ’, ‘Hello’, ‘Привет’, ‘hELLo’, ‘hElLo’, ‘hElLo’, ‘hello’ .. и т.д. и т.п.

 if ($var == 'hello') {
 echo 'It works!';
}
  

Очевидно, что этого не произойдет, но что я мог бы с этим сделать, чтобы не беспокоиться о регистре текста?

Я поискал вокруг подобные вещи, я нашел strcasecmp() , но мне кажется, это не совсем то, чего я хочу.

Ответ №1:

Почему бы вам не попробовать:

 if (strtolower($var) == 'hello') {
 echo 'It works!';
}
  

Итак, если $var = 'HelLo'; , он переведет его в нижний регистр

Комментарии:

1. как насчет if(e == strtolower(É)) ?? Если ваш контент имеет формат UTF-8, вам лучше использовать mb_strtolower($string, 'UTF-8') . Взгляните php.net/manual/en/function.mb-strtolower.php

2. Я не знаю, что происходит, но это ничего не дает. Ничего нет. Что я здесь сделал не так? $var == 'HEllO'; if (strtolower($var) == 'hello') { echo 'It works!'; } Даже это не сработает: echo $var; посмотрите сами — getfilm.co.uk/case-insensitivity.php

3. посмотрите на демонстрацию здесь: codepad.org/PgiFEf9z устанавливается $var только с ОДНИМ знаком равенства: $var = 'HEllO'

Ответ №2:

Используйте strtolower

например:

 $var = 'HeLLo';
if (strtolower($var) == 'hello') {
 echo "it works";
}
  

Комментарии:

1. хехе:-p. это все, что я должен сказать

Ответ №3:

Для этого есть специальная функция PHP — strcasecmp($str1, $str2) . Тем не менее, я бы все равно выбрал strtolower ($ var), потому что вам не нужно беспокоиться о unicode.