Как правильно и точно обрезать строку в php?

Как правильно и точно обрезать строку в php, в данном примере до двухсот символов.
Вроде вопрос тривиальный, но на практике столкнулся с проблемой.

Берем случайный текст (преимущественно кириллический) длиной в 267 символов:
Случайный текст
Как таковых, моделей в AngularJS нет. Использованная выше ngModel — не более чем директива, меняющая поведение DOM, а model лишь удобное имя. Вы можете использовать к примеру модели Backbone.js, а можете вообще запрашивать данные с сервера вручную или пользоваться модулем ngResource (читайте документацию $http и $resource).

Пробуем первую функцию обрезки строки
substr($str, 0, 200);
Результат: обрезанный текст длиной 99 символов.

Пробуем вторую продвинутую функцию
mb_substr($str, 0, 200, 'UTF-8');
Результат: обрезанный текст длиной 162 символа.

Что я делаю не так?

p.s. javascript: str.substring(0, 200) без проблем.
  • Вопрос задан
  • 7680 просмотров
Решения вопроса 1
fabrykant
@fabrykant
mb_substr($str, 0, 200, 'UTF-8');
этот код работает
считаю количество символов функцией mb_strlen() получается 200
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@MilkyWay
Кодировка не UTF-8 вероятно
Ответ написан
Комментировать
GM2mars
@GM2mars Автор вопроса
Пардон.
mb_substr($str, 0, 200, 'UTF-8');

работает верно, просто сервис где я считал количество символов сам неправильно работает, и мне выдавал неверный результат :(
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы