Бывает, что необходимо грамотно обрезать текст на 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 без глюков!?