@kimqar123

Почему вместо русских букв выводит вопрос?

Есть функции которые перебирают и записывают массив букв:
<?php

$arItems = [];

$arAllLetters = [];

foreach ($arResult['rows'] as $arItem){

    $s = substr($arItem['UF_NAME'], 0, 1);

    $s = strtoupper($s);

    if( preg_match("/[А-Яа-я]/", $s) ){

        if(!in_array($s,$arAllLetters['K']))
            $arAllLetters['K'][] = $s;
    }


    if( preg_match("/[A-Za-z]/", $s) ){

        if(!in_array($s,$arAllLetters['L']))
            $arAllLetters['L'][] = $s;
    }


   if(is_numeric($s)){

       $s = '0-9';

       $arAllLetters['N'] = ['0-9'];
   }



    $arItems[$s][] = [
        'NAME' => $arItem['UF_NAME'],
        'CODE' => $arItem['UF_CODE']
    ];
}

$arResult['LETTERS'] = $arItems;

$arResult['ALL_LETTERS'] = $arAllLetters;

Английские буквы выводятся, русские - выводятся ? вопросы.
В чем может быть ошибка? Пробовал менять кодировку на utf-8, не срабатывало
Весь код прописываю в файле result_modifier.php
  • Вопрос задан
  • 119 просмотров
Решения вопроса 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега PHP
Ошибка в том, что вы для работы со строками в многобайтовой кодировке используете однобайтные функции.
https://www.php.net/manual/ru/book.mbstring.php

https://ideone.com/4Sz3Lc

P.S. Вы строку к верхнему регистру приводите, зачем в регулярках нижний?
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Возможно в регулярке с кириллицей нужно указать модификатор "u"
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы