Как обрезать текст на PHP без глюков?

Как обрезать текст на PHP без глюков?Бывает, что необходимо грамотно обрезать текст на PHP! Но получается так, что SUBSTR «режет» не так как надо, попадая в некотором смысле на 2х байтную кодировку, где в конце обрезанного текста вылетает знак вопроса «?» в ромбике. Глюк! Это из-за того, что он не может понять где конец символа и тупо рубит его «пополам» как бы — из-за этого все браузеры не понимают как бы пол-символа, так как нет «окончания» какой-либо буквы. Я долго бился что-то придумывал, переводы в байты, обратно — мозг взорвал просто и ни как не мог понять как это сделать. Не помог даже iconv(); Идея пришла чуть позже: Сначала «вырезаем» сабстером часть текста. Затем, переворачиваем его началом в конец. Затем, находим, например «пробел» или «точку». Режем. И переворачиваем строку обратно. В конце, так сказать, добавляем для красоты «…». Круто. Почему в три строчки? Почему бы разработчикам PHP сразу не сделать одну функцию и не писать сие творение в 3-4 строки… И никаких регулярок! Вот пример:

$description = substr($description, 0, 250); // Режем с 0 по 250 символов, но есть глюк с ?
$descrnew = strstr(strrev($description), ‘ ‘); // Переворачиваем строку и находим первый пробел ‘ ‘, обрезаем по него строку нашим текстом
$description = strrev($descrnew); // Переворачиваем строку обратно
$description = $description.’…’; // Добавляем в конце …

Собственно и всё. Гюков с обрезанным текстом (строкой) на конце со знаком вопрос в ромбике теперь нет. Мало ли кому пригодится эта простая фитча. Может и вы поделитесь своей фишкой. Как обойти глюк в PHP. Ну теперь-то вы поняли как обрезать текст на PHP без глюков!?