Как обрезать строку UTF8 в PHP?

В моем PHP-коде есть строки, которые нужно обрезать, если они слишком длинные.

Например, если текст выглядит примерно так:

Привет, я хотел бы сказать вам, как это замечательно.

Он заменит его на это:

Привет, я хотел бы ...

Для этого я сделал простой substr . Проблема в том, что в UTF8 некоторые символы на самом деле состоят из двух символов. И у меня были проблемы с разрезанием символа посередине: например, когда я пытаюсь вставить измененную строку в базу данных, происходит сбой.

Вот моя текущая функция:

static function short($string, $max = 255){
   if(strlen($string) >= $max){
       $string = substr($string, 0, $max - 5).'...';
   } return $string;
}

Кто-нибудь знает, как заставить эту функцию работать даже для символов UTF8?

15
задан Dennis 16 June 2012 в 18:20
поделиться