PHP. Сокращение длинного текста. Функция mb_substr_replace

Данный материал предоставлен сайтом PacificSky.Ru исключительно в ознакомительных целях. Администрация не несет ответственности за его содержимое.
Сокращение длинного текста и вывод многоточия с определенной позиции. Создание собственной функции mb_substr_replace.


Представим пример, что у нас есть текст в блоке вывода последних сообщений с форума.
И этот текст имеет слишком большую длину и не умещается по размерам в месте вывода.
В данном уроке продемонстрирован пример как сократить размер длинного теста и выводить многоточие с определенной позиции.

Функция была найдена на сайте php.net
Обозначим заранее параметры функции:
Первый параметр - входная строка.
Второй параметр - строка замены.
Третий параметр - нумерация символа с которого начинается замена.
Четвертый параметр - длина заменяемой подстроки в строке (Обычно равен null).
Пятый параметр - кодировка строки.

Исходный код функции:

function mb_substr_replace($string, $replacement, $start, $length=null, $encoding=null) {
    if ($encoding == null) $encoding = mb_internal_encoding();
    if ($length == null) {
        return mb_substr($string, 0, $start, $encoding) . $replacement;
    }
    else {
        if($length < 0) $length = mb_strlen($string, $encoding) - $start + $length;
        return 
            mb_substr($string, 0, $start, $encoding) .
            $replacement .
            mb_substr($string, $start + $length, mb_strlen($string, $encoding), $encoding);
    }
}


Проведение теста работы функции:

Исходная строка:
$string = "Это просто строка для проверки";


Строка замены:
$replacement = "...";


Символ с которого начинается замена:
$start =  17;


$string = "Это просто строка для проверки";
$replacement = "...";
$start =  17;

echo mb_substr_replace($string, $replacement, $start);

function mb_substr_replace($string, $replacement, $start, $length=null, $encoding=null) {
    if ($encoding == null) $encoding = mb_internal_encoding();
    if ($length == null) {
        return mb_substr($string, 0, $start, $encoding) . $replacement;
    }
    else {
        if($length < 0) $length = mb_strlen($string, $encoding) - $start + $length;
        return 
            mb_substr($string, 0, $start, $encoding) .
            $replacement .
            mb_substr($string, $start + $length, mb_strlen($string, $encoding), $encoding);
    }
}


Полученный результат:
Это просто строка...
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.