Разбор функции cot_cutstring
Функция cot_cutstring предназначена для обрезки строки до определенной длины и добавления троеточия ("...") в случае, если строка превышает эту длину.
Код функции
/**
* Truncates a string
*
* @param string $res Source string
* @param int $length Length
* @return string
*/
function cot_cutstring($res, $length)
{
if (mb_strlen($res) > $length) {
$res = mb_substr($res, 0, ($length - 3)) . '...';
}
return $res;
}
Описание:
cot_cutstring(string $res, int $length)
Параметры:
$res (string) — исходная строка, которую необходимо обрезать.
$length (int) — максимальная длина, до которой нужно обрезать строку.
Логика работы:
Проверка длины строки:
if (mb_strlen($res) > $length) — с помощью функции mb_strlen (многоязычная версия функции strlen), которая корректно работает с многобайтовыми символами (например, с UTF-8), проверяется, превышает ли длина строки заданную максимальную длину $length.
Обрезка строки:
Если строка слишком длинная, она обрезается до нужной длины минус 3 символа (для троеточия), и добавляются троеточие ("..."):
$res = mb_substr($res, 0, ($length - 3)) . '...';
Здесь используется функция mb_substr, чтобы безопасно обрезать строку до заданной длины. Обрезанная строка затем дополняется троеточием.
Возврат результата:
Функция возвращает строку, которая либо была обрезана и дополнена троеточием, либо осталась без изменений, если ее длина меньше или равна заданной.
Пример работы функции:
$string = "This is a long string that will be truncated";
$maxLength = 20;
$result = cot_cutstring($string, $maxLength);
echo $result;
Результат:
This is a long...
еще
'ADMIN_COMMENTS_TEXT_TRUNCATED' => htmlspecialchars(cot_cutstring(strip_tags($row['com_text']), 100)),
в шаблоне:
<p>{ADMIN_EXTENSIONS_DESCRIPTION|cot_cutstring($this, 60)}</p>
Объяснение:
Строка "This is a long string that will be truncated" изначально длиной 41 символов будет обрезана до 20 символов. После обрезки добавляется троеточие, и результат будет: "This is a long...".
Примечания:
Функция использует mb_strlen и mb_substr для работы с многобайтовыми символами, что делает ее более универсальной и подходящей для строк в кодировке UTF-8, в отличие от стандартных функций strlen и substr, которые могут неправильно обрабатывать многобайтовые символы.
Преобразует строку только в том случае, если ее длина больше заданного лимита. Если строка не превышает установленную длину, она остается неизменной.