Что выведет код Junior Строки обновлено
Байты и символы
Вопрос
Что выведет скрипт (PHP 8.3)? По строке на каждый вывод.
<?php
$s = "Ёж";
echo strlen($s), "\n";
echo mb_strlen($s), "\n";
echo strtoupper("ёж hi"), "\n";
echo mb_strtoupper("ёж hi"), "\n";
echo ucfirst("éa"), "|", mb_substr("привет", 1, 3), "\n";
Попробуйте сами
Напишите, что выведет код: каждый вывод с новой строки.
Показать ответ и разбор
Коротко
Код выведет: 4, 2, ёж HI, ЁЖ HI, éa|рив. В UTF-8 «Ё» и «ж» по 2 байта: strlen 4, mbstrlen 2. strtoupper в PHP 8.2+ меняет только ASCII: ёж HI. mbstrtoupper понимает Юникод: ЁЖ HI. ucfirst тоже байтовая и не трогает é, а mbsubstr берёт 3 символа с позиции 1: рив.
Что выведет
4
2
ёж HI
ЁЖ HI
éa|рив
Разбор
В UTF-8 «Ё» и «ж» по 2 байта: strlen 4, mb_strlen 2. strtoupper в PHP 8.2+ меняет только ASCII: ёж HI. mb_strtoupper понимает Юникод: ЁЖ HI. ucfirst тоже байтовая и не трогает é, а mb_substr берёт 3 символа с позиции 1: рив.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.