Ответ 1
Все, что вам нужно, это mb_strimwidth(): http://php.net/manual/en/function.mb-strimwidth.php
Пример:
mb_strimwidth('Hi, I would like to tell you how wonderful this is.',0,15,'...','utf-8');
У меня есть некоторые строки в моем PHP-коде, которые нужно усечь, если они слишком длинны.
Например, если текст выглядит примерно так:
Привет, я хотел бы рассказать вам, как это замечательно.
Он заменит его следующим:
Привет, я хотел бы...
Для этого я сделал простой substr
. Проблема в том, что в UTF8 некоторые символы на самом деле являются двумя символами. И у меня были некоторые проблемы с тем, что символ срезается посередине: например, когда я пытаюсь вставить измененную строку в базу данных, она сработает.
Вот моя текущая функция:
static function short($string, $max = 255){
if(strlen($string) >= $max){
$string = substr($string, 0, $max - 5).'...';
} return $string;
}
Кто-нибудь знает способ заставить эту функцию работать даже для символов UTF8?
Все, что вам нужно, это mb_strimwidth(): http://php.net/manual/en/function.mb-strimwidth.php
Пример:
mb_strimwidth('Hi, I would like to tell you how wonderful this is.',0,15,'...','utf-8');
попробуйте с mb_substr()
:
static function short($string, $max = 255){
if(mb_strlen($string, 'utf-8') >= $max){
$string = mb_substr($string, 0, $max - 5, 'utf-8').'...';
} return $string;
}
Вы можете использовать метод mb_substr. См. Полный пример.