Простой strtolower не работает

Я уверен, что это что-то очевидное, что мне не хватает, но у меня есть строка «GB», которая хранится как $str, а затем выводится с помощью strtolower...

$str = bp_member_profile_data('field=Country');
echo strtolower($str);

Я ожидаю увидеть «gb» (нижний регистр), но вывод по-прежнему «GB» (верхний регистр).

Что я могу делать неправильно?

ОБНОВЛЕНИЕ. Выяснилось, что проблема связана с bp_member_profile_data, это PHP-функция BuddyPress, которая автоматически повторяет эхо, поэтому она игнорировала strtolower. Спасибо всем, кто помог сузить круг!


person fightstarr20    schedule 30.03.2013    source источник
comment
Пожалуйста, hexdump результат нить.   -  person mario    schedule 31.03.2013
comment
Возможно, вам следует использовать mb_strtolower($str), если входная строка находится на языке, отличном от языкового стандарта сервера, или если ваши символы немного экзотические, например GB (я использовал ромадзи полной ширины, чтобы написать их)   -  person Jean    schedule 31.03.2013
comment
Я попытался преобразовать строку в шестнадцатеричный код с помощью команды echo bin2hex($str); но я не получаю никакого результата от этого   -  person fightstarr20    schedule 31.03.2013
comment
Выходя на очень свободной конечности здесь; вы выводите в элемент HTML, который имеет text-transform:uppercase?   -  person MichaelRushton    schedule 31.03.2013
comment
Также попробуйте: print_r(array_map('dechex', array_map('ord', str_split($str))));.   -  person MichaelRushton    schedule 31.03.2013
comment
@MichaelRushton интересная идея. Марио, как выглядит html-код?   -  person Jean    schedule 31.03.2013
comment
Это дает мне массив ( [0] => 0 )   -  person fightstarr20    schedule 31.03.2013
comment
а что за print_r($str);?   -  person Jean    schedule 31.03.2013
comment
Чтобы не задавать глупый вопрос, но вы изменили $string на любую переменную, которая у вас есть, верно?   -  person MichaelRushton    schedule 31.03.2013
comment
print_r ($ ул); дает мне ГБ   -  person fightstarr20    schedule 31.03.2013
comment
а что за echo mb_internal_encoding();? Извините, что заставляю вас тестировать дикие вещи… но проблема странная.   -  person Jean    schedule 31.03.2013
comment
mb_internal_encoding дает мне GBUTF-8   -  person fightstarr20    schedule 31.03.2013
comment
Вы имеете в виду UTF-8? ГБ исходит из предыдущего вывода, верно? Просто проверка.   -  person Jean    schedule 31.03.2013
comment
Извините за ошибку, да UTF-8   -  person fightstarr20    schedule 31.03.2013
comment
Вы пробовали другую кодировку в mb_strtolower($str, 'UTF-8');? Список доступных кодировок находится здесь: php.net/manual/en/mbstring.supported -encodings.php Возможно, использование соответствующей кодировки сработает. В данный момент у меня нет для вас других предложений. Прости.   -  person Jean    schedule 31.03.2013
comment
Я разобрался, я обновлю основную   -  person fightstarr20    schedule 31.03.2013


Ответы (2)


Проверьте, приятель, нажмите функцию bp_member_profile_data(), она повторяет:

function bp_member_profile_data( $args = '' ) {
    echo bp_get_member_profile_data( $args );
}

Вы можете использовать bp_get_member_profile_data()

person enapupe    schedule 30.03.2013

Попробуй использовать:

mb_strtolower($str);

Это может сработать.

Из Руководства по PHP:

Если входная строка находится на языке, отличном от языкового стандарта сервера, вам следует использовать функцию mb_strtolower().

Прототип функции:

string mb_strtolower ( string $str [, string $encoding = mb_internal_encoding() ] )

Вы можете попробовать добавить соответствующую кодировку.

Параметр encoding — это кодировка символов. Если он опущен, будет использоваться значение внутренней кодировки символов.

person Jean    schedule 30.03.2013
comment
странный. Как предложил Марио, сделайте шестнадцатеричный дамп строки результата? Может стоит указать кодировку символов? - person Jean; 31.03.2013
comment
Вы пробовали это с параметром UTF-8 mb_strtolower($str, 'UTF-8'); ? - person Marcel Gwerder; 31.03.2013
comment
Я не получаю никакого результата, используя этот MArcel, сюжет утолщается - person fightstarr20; 31.03.2013
comment
Спасибо, что отметили этот пост как ответ. Но это не отвечает на вопрос, не так ли? - person Jean; 31.03.2013