Баг с буквой “Й”

275
20 ноября 2017, 21:10

Заметил, что в некоторых непонятных случаях php считает букву "Й" не 1 символом, а двумя. Из-за этого возникают разные неприятности, например при переборе символов функцией mb_substr. Как можно решить эту проблему?

Answer 1

Можно применять нормализацию:

$i1 = "\xd0\xb9"; // й
$i2 = "\xd0\xb8\xcc\x86"; // и с дужкой
echo $i1, ' ', strlen($i1), ' ', mb_strlen($i1), ' ', mb_strlen(Normalizer::normalize($i1, Normalizer::NFC)),  "\n";
echo $i2, ' ', strlen($i2), ' ', mb_strlen($i2), ' ', mb_strlen(Normalizer::normalize($i2, Normalizer::NFC)), "\n";  

й 2 1 1
й 4 2 1

после нормализации, композитная версия й превращается в простую.

3v4l

READ ALSO
Ошибка при построении AJAX запроса в Wordpress

Ошибка при построении AJAX запроса в Wordpress

Возникает ошибка при формировании ответа от файла-обработчика:

276
Как правильно сжимать картинки (php)?

Как правильно сжимать картинки (php)?

Есть картинки, которые загружаются в интернет-магазин через обычный массив $_FILEВопрос: как правильно сжать картинки без потери качества и сделать...

214
Добавить сортировку в sql?

Добавить сортировку в sql?

Привет всем! Питаюсь добавить тут сортировка по рандомно но почему то выдает ошибка помогите если не сложно

187