Выбор ответа Junior Строки обновлено

Многобайтовые строки

Вопрос

Как правильно получить первые 3 символа строки "Ёжик" в UTF-8?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: mbsubstr($s, 0, 3). substr и индексация $s[0] работают с байтами: из «Ёжик» получится «Ё» и половина «ж», то есть битая строка. mbsubstr считает символы с учётом кодировки (по умолчанию UTF-8). strsplit тоже режет по байтам, для символов есть mbstrsplit.

Варианты ответа

  1. mb_substr($s, 0, 3)правильный ответ
  2. substr($s, 0, 3)
  3. $s[0] . $s[1] . $s[2]
  4. str_split($s)[0]

Разбор

substr и индексация $s[0] работают с байтами: из «Ёжик» получится «Ё» и половина «ж», то есть битая строка. mb_substr считает символы с учётом кодировки (по умолчанию UTF-8). str_split тоже режет по байтам, для символов есть mb_str_split.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.