substr и кириллица в PHP
У php функции substr довольно странное поведение при работе со строками в кириллице на UTF-8.
К примеру, если есть 2 переменные
$name_1 = "Вася"; $name_2 = "Vasya";
То если мы применим к этим строкам функцию substr, то получим очень интересный результат. Пусть мы хотим получить 1ый символ каждой из строк. Мы ожидаем, что это будут "В" и "V". Однако у PHP на это другой взгляд.
echo substr($name_1, 0, 1); // увидим "?" (краказябру) echo substr($name_2, 0, 1); // увидим "V"
Дело в том, что для работы с кириллицей на UTF-8 требуется использоваться аналог функции substr - функцию mb_substr.
echo mb_substr($name_1, 0, 1); // увидим "В" echo mb_substr($name_2, 0, 1); // увидим "V"