Заказать бесплатную консультацию
- Создание и продвижение сайтов
- Разработка Landing Page
- Контекстная реклама в Яндекс и Google
- 10 лет опыта
- 150+ выполненных проектов
- 10 лет гарантия
Иногда случается так, что при обрезке строки с помощью функции substr() в кодировке utf-8 в конце обрезанной строки появляется непонятный символ:
<?
$stroka = 'Строка которую мы будем резать';
echo substr($stroka,0,40);
В результате: Строка которую мы буд?
?>
В конце строки появился какой то непонятный символ (у меня этот символ непонятный в виде знака ?), сейчас мы попробуем его убрать.
Когда я впервые столкнулся с етой проблемой, я нашел в интернете информацию о том, что можно использовать функцию mb_substr(), но на моем хостинге она не работала. А выдавала ошибку:
Я несколько часов искал ответ на этот вопрос, но ничего так и не нашел. А оказалось все проще простого!
Я решил реализовать решение этой проблемы изменив кодировку строки перед обрезкой, затем обрезать и вернуть назад в кодировку utf-8.
<?
$stroka = iconv('UTF-8','windows-1251',$stroka ); //Меняем кодировку на windows-1251
$stroka = substr($stroka ,0,40); //Обрезаем строку
$stroka = iconv('windows-1251','UTF-8',$stroka ); //Возвращаем кодировку в utf-8
echo $stroka;
?>
В результате: Строка которую мы буд
Для того, чтобы не подставлять каждый раз представленный выше код, напишем собственную функцию...
<?
//Назовем функцию "substr_function" - вы можете придумать свое названиеfunction substr_function($stroka,$chislo)
$stroka = substr($stroka ,0,$chislo); //Обрезаем строку
$stroka = iconv('windows-1251','UTF-8',$stroka ); //Возвращаем кодировку в utf-8
//Добавим троеточие после обрезанного текста
?>
Как использовать функцию: substr_function(Сюда вставляем текст или переменную содержащую текст,60)
Например:
<?
echo substr_function('Если ввести сюда текст, то функция обрежет его и подставит вконце троеточие',22)
?>
Результат: Если ввести сюда текст...
Вот и все, как видите многие вещи в PHP можно обходить легкими путями!
Метки: substr(), php, обрезка строки php, функция substr(), mb_substr(),