UTF-8 не отображается в многомерных массивах с ЦИФРОВЫМ ключом - PullRequest
1 голос
/ 05 июня 2011

У меня есть скрипт, который помещает некоторый кириллический текст в переменные сеанса, например так: $_SESSION['cyrillic'][$y], где $ y - итератор, поэтому в конце массив будет выглядеть так:

[cyrillic] => Array
    (
        [0] => ������
        [1] => ��������
        [2] => ������
        [3] => ������

Однако после борьбы с заголовками UTF-8 в PHP, HTML и файлах, сохраняющих наборы символов (с BOM и без нее), я обнаружил, что нет ничего плохого в настройках набора символов (очевидно), как в настройке любого другого сеанса переменная с кириллицей в тексте будет работать.

Это означает: $_SESSION['cyr']['txt'] = $cyrillic_string_here; будет работать нормально, как показано здесь:

[cyr] => Array ( [txt] => десять )

Итак, что я тогда не могу понять: почему я не могу вставить кириллицу в массив, используя числовой ключ, но алфавитный? И как я могу обойти это, когда мне нужно использовать итерационный цикл?

РЕДАКТИРОВАТЬ: Это не так. Я могу вставить тот же текст в другую переменную и отобразить его, либо переменную сеанса без числовых значений ключа, и она будет работать нормально.

РЕДАКТИРОВАТЬ: Я также нашел это:

* Трудно найти документальное предложение, о котором я сейчас говорю: «На ключи в ассоциативном массиве $ _SESSION распространяются те же ограничения, что и на имена обычных переменных в PHP». *

Но я подумал, что мог бы создать массив с числовым значением, подобным этому: $ array [$ i]? Или это означает, что поскольку ключом является ASSOC, $ array ['text'] [$ i] не будет работать?

1 Ответ

0 голосов
/ 05 июня 2011

Нашел решение.У меня была trim(strtolower($text));, обернутая вокруг моей кириллицы.

strtolower:

[Эти функции] работают только тогда, когда перевод выполняется между общими символами в ISO 8859-1 и UTF-8, что означает, что онибудет хорошо работать с западными языками, но не с кириллицей или азиатским языком.

Спасибо за вашу помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...