Заказать бесплатную консультацию
- Создание и продвижение сайтов
- Разработка Landing Page
- Контекстная реклама в Яндекс и Google
- 10 лет опыта
- 150+ выполненных проектов
- 10 лет гарантия
ул. Б.Хмельницкого 42, офис 404
+7 (924) 841 09 12
Добрый день!
В данной статье хочу поделиться своей функцией для обрезки строк, которая не только уберет некоторые проблемы в функции substr() в кодировке utf-8, но и будет иметь несколько плюсов.
Скачать функцию для обрезки строк на php (926,00b)
function mySubstr($text,$char1,$char2)
{
$text = strip_tags($text); // Удаляем теги
$text = mb_convert_encoding($text, "windows-1251", "UTF-8"); // Меняем кодировку на windows-1251
$countChars = strlen($text); // Считаем сколько символов в целой строке
if($char2 == '-') {$text = substr($text,$char1);} // варинат функции substr с двумя параметрами
else{$text = substr($text,$char1,$char2);}// варинат функции substr с тремя параметрами
$text = mb_convert_encoding($text, "UTF-8", "windows-1251");// Меняем кодировку обратно на UTF-8
$word = explode(' ',$text); // разбиваем текст на слова и помещаем в массив
$countWords = count($word) - 1; // считаем сколько слов у нас есть
if($char1 < $countChars and $char1 != '0') // Если строка обрезалась с начала текста
{
$start= '...'; // Троеточие в начале
$startWord = 1;
}
else {$startWord = 0;}
if($char2 < $countChars and $char2 != '-')
{
$finish= '...';// Троеточие в конце
$finishWord = $countWords - 1;
}
else {$finishWord = $countWords;}
// StartWord указывает с какого слова нужно начинать текст (если строка резалась, то со второго, если нет, то с первого)
// finishWord указывает с какого слова нужно закончить текст (если строка резалась, то с предпоследнего, если нет, то с последнего)
for($startWord;$startWord <= $finishWord; $startWord++) // Перебираем массив со словами,и создаем строку
{
$obr_text .= $word[$startWord].' ';
}
$text = trim($obr_text); // Удаляем пробелы в конце и в начале строки
return $start.$text.$finish; // ......
}
Результат работы функции можно поместить либо в переменную, либо вывести с помощью ECHO.
echo mySubstr("abcdef", 1, '-');
echo '<p>'; // возвращает "bcdef"
echo mySubstr("abcdef", 1, 3); // возвращает "bcd"
echo '<p>';
echo mySubstr("abcdef", 0, 4); // возвращает "abcd"
echo '<p>';
echo mySubstr("abcdef", 0, 8); // возвращает "abcdef"
echo '<p>';
echo mySubstr("abcdef", -1, '-'); // возвращает "f"
echo '<p>';
echo mySubstr("abcdef", -2, '-'); // возвращает "ef"
echo '<p>';
echo mySubstr("abcdef", -3, 1); // возвращает "d"
echo '<p>';
echo mySubstr("abcdef", 0, -1); // возвращает "abcde"
echo '<p>';
echo mySubstr("abcdef", 2, -1); // возвращает "cde"
echo '<p>';
echo mySubstr("abcdef", 4, -4); // возвращает ""
echo '<p>';
echo mySubstr("abcdef", -3, -1); // возвращает "de"
Метки: mysubstr(), substr(), php, функция, проблемы, utf-8,