Задать вопрос
gordon_shamway
@gordon_shamway

Проблема с кирилицей в php?

есть функция которая генерирует рандомную строку
function randomString($length){ // generated one random symnol
        $characters = 'йцукенгшщзхъфывапролджэячсмитьбюё';
        $charactersLength = mb_strlen($characters);
        $randomString = '';
        for ($i = 0; $i <$length ; $i++) {
            $randomString .= $characters[rand(0, $charactersLength - 1)];
            
        }
        return $randomString;
    }
echo randomString(15);

Почему я на выходе получаю такое
��к�гѹѷЄ��
Проблема в самой функции, потому что если написать
echo 'Привет мир';
Выводит Привет Мир
  • Вопрос задан
  • 251 просмотр
Подписаться 1 Оценить Комментировать
Решения вопроса 2
sim3x
@sim3x
php > $s = "йцук";
php > echo $s[0];
�


sudo apt-get install php7.0-mbstring

php.net/manual/en/function.mb-substr.php
php > echo mb_substr($s, 0, 1);
й


В кириллице каждый символ состоит из двух байт
Ответ написан
Комментировать
@hufawoso
function randomString($length){ // generated one random symnol
    $characters = 'йцукенгшщзхъфывапролджэячсмитьбюё';
    $charactersLength = mb_strlen($characters);
    $randomString = '';
    for ($i = 0; $i <$length ; $i++) {
        $randomString .= mb_substr($characters,rand(0, $charactersLength - 1), 1);

    }
    return $randomString;
}
echo randomString(15);
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
vitcorp
@vitcorp
Попробуй в NotePad ++, если в нем кодишь, поставить кодировку UTF-8 без BOM.
Мне помогало, когда я бота делал, у меня так же было.
Это неверная интерпретация символов кириллицы.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы