Topic: Как обрезать текст по словам
Проблема собственно в том, что юникодовский текст занимает больше байт, чем количество символов. Поэтому обычный substr и т.п. могут обрезать текст по служебному байту, что приводит к отображению браузером знака вопроса в конце текста. Все это не очень красиво.
До недавнего времени я вынужден был вообще пойти на крайнее извращение и перед использованием str_функций преобразовывал текст в windows-1251, выполнял нужные операции, а потом кодировал обратно в utf-8.
Вот немного модифицированная функция для таких случаев:
// Обрезаем текст по словам
function cut_text_says($text, $countword = 10, $sep = ' ') {
$words = split($sep, $text);
if ( count($words) > $countword )
$text = join($sep, array_slice($words, 0, $countword));
return $text;
}
Cтрока разбивается в массив (которые уже корректно работают с utf-8), массив обрезается, а потом объединяется в строку. Все элементарно.