Я уверен, что это что-то очевидное, что мне не хватает, но у меня есть строка «GB», которая хранится как $str, а затем выводится с помощью strtolower...
$str = bp_member_profile_data('field=Country');
echo strtolower($str);
Я ожидаю увидеть «gb» (нижний регистр), но вывод по-прежнему «GB» (верхний регистр).
Что я могу делать неправильно?
ОБНОВЛЕНИЕ. Выяснилось, что проблема связана с bp_member_profile_data, это PHP-функция BuddyPress, которая автоматически повторяет эхо, поэтому она игнорировала strtolower. Спасибо всем, кто помог сузить круг!
mb_strtolower($str)
, если входная строка находится на языке, отличном от языкового стандарта сервера, или если ваши символы немного экзотические, напримерGB
(я использовал ромадзи полной ширины, чтобы написать их) - person Jean   schedule 31.03.2013text-transform:uppercase
? - person MichaelRushton   schedule 31.03.2013print_r(array_map('dechex', array_map('ord', str_split($str))));
. - person MichaelRushton   schedule 31.03.2013print_r($str);
? - person Jean   schedule 31.03.2013$string
на любую переменную, которая у вас есть, верно? - person MichaelRushton   schedule 31.03.2013echo mb_internal_encoding();
? Извините, что заставляю вас тестировать дикие вещи… но проблема странная. - person Jean   schedule 31.03.2013UTF-8
? ГБ исходит из предыдущего вывода, верно? Просто проверка. - person Jean   schedule 31.03.2013mb_strtolower($str, 'UTF-8');
? Список доступных кодировок находится здесь: php.net/manual/en/mbstring.supported -encodings.php Возможно, использование соответствующей кодировки сработает. В данный момент у меня нет для вас других предложений. Прости. - person Jean   schedule 31.03.2013