У меня (в базе данных SQLite) следующая строка:
Лампа в вытяжке на кухне меняется, начиная с вытаскивания белого штырька справа.
Строка корректно показана PHP с помощью print
. Я хотел бы получить только первые 50 символов этой строки, т.е.
Лампа в вытяжке на кухне меняется, начиная с вытас
.
Я попытался использовать как substr, так и mb_substr и получить
Лампа в вытяжке на кухне ме�
, то есть всего 28 символов.
Прочитав здесь и в других местах проблемы mbstring, я понимаю, что это фактически 50-байтовая строка (22 русских символа = 44 байта плюс 5 пробелов плюс 1 символ вопроса).
Есть ли хорошее решение? Все мои строки - это UTF-8, поэтому я мог бы, конечно, запрограммировать функцию substr-function, проверив первый бит каждого байта и т.д. Но это должно было быть сделано раньше, правильно?
UPDATE: Я считаю, что mb_substr
работает неправильно, потому что mb_detect_encoding()
работает неправильно.