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