Функция cot_wraptext в Cotonti

Эта функция предназначена для оборачивания текста с учетом заданной длины строки, чтобы текст не выходил за пределы указанной длины (в символах)

Эта функция предназначена для оборачивания текста с учетом заданной длины строки, чтобы текст не выходил за пределы указанной длины (в символах).

/**
 * Wraps text
 *
 * @param string $str Source text
 * @param int $wrap Wrapping boundary
 * @return string
 */
function cot_wraptext($str, $wrap = 80)
{
    if (!empty($str)) {
        $str = preg_replace('/([^\n\r ?&\.\/<>\"\\-]{'.$wrap.'})/', " \\1\n", $str);
    }
    return $str;
}

if (!function_exists('mb_ucfirst')) {
    /**
     * Make a string's first character uppercase (Multibyte)
     * @param string $str
     * @param ?string $encoding
     * @return string
     * @see https://wiki.php.net/rfc/mb_ucfirst
     */
    function mb_ucfirst($str, $encoding = null)
    {
        if ($encoding) {
            return mb_convert_case(mb_substr($str, 0, 1, $encoding), MB_CASE_TITLE, $encoding)
                . mb_substr($str, 1, null, $encoding);
        }
        return mb_convert_case(mb_substr($str, 0, 1), MB_CASE_TITLE) . mb_substr($str, 1, null);
    }
}

if (!function_exists('mb_lcfirst')) {
    /**
     * Make a string's first character lowercase (Multibyte)
     * @param string $str
     * @param ?string $encoding
     * @return string
     * @see https://wiki.php.net/rfc/mb_ucfirst
     */
    function mb_lcfirst($str, $encoding = null)
    {
        if ($encoding) {
            return mb_strtolower(mb_substr($str, 0, 1, $encoding), $encoding) . mb_substr($str, 1, null, $encoding);
        }
        return mb_strtolower(mb_substr($str, 0, 1)) . mb_substr($str, 1, null);
    }
}

Давайте подробно разберем каждую функцию в приведенном  коде.

1. Функция cot_wraptext

function cot_wraptext($str, $wrap = 80)
{
    if (!empty($str)) {
        $str = preg_replace('/([^\n\r ?&\.\/<>\"\\-]{'.$wrap.'})/', " \\1\n", $str);
    }
    return $str;
}


Разбор:
Параметры функции:

$str: строка текста, которую нужно обернуть.
$wrap: максимальная длина строки, после которой нужно вставить разрыв строки (по умолчанию это 80 символов).
Проверка на пустоту текста:

if (!empty($str))


Перед тем как обработать текст, функция проверяет, не пуста ли строка $str. Если строка пуста, то обработка не производится и возвращается пустая строка.

Использование preg_replace:

$str = preg_replace('/([^\n\r ?&\.\/<>\"\\-]{'.$wrap.'})/', " \\1\n", $str);


В этой строке используется регулярное выражение, которое ищет участки текста длиной $wrap символов, не включая в этот отрезок символы, которые обычно могут использоваться для разрыва строки (например, пробелы, знаки вопроса и т. д.).

Регулярное выражение:

([^\n\r ?&\.\/<>\"\\-]{'.$wrap.'})

Это выражение находит подряд идущие символы, которые не являются разрывом строки, пробелом, вопросительным знаком, амперсандом и т. д.

\\1\n

Заменяет найденные участки текста, добавляя пробел перед найденным текстом и вставляя разрыв строки.

Возврат результата:

Функция возвращает строку с обернутым текстом. Если текст был пуст, то возвращается пустая строка.

Пример работы:
Если на вход подается строка:

$text = "This is a long text that needs to be wrapped properly.";
echo cot_wraptext($text, 20);


Результат будет:

This is a long
text that needs
to be wrapped
properly.


2. Функция mb_ucfirst

function mb_ucfirst($str, $encoding = null)
{
    if ($encoding) {
        return mb_convert_case(mb_substr($str, 0, 1, $encoding), MB_CASE_TITLE, $encoding)
            . mb_substr($str, 1, null, $encoding);
    }
    return mb_convert_case(mb_substr($str, 0, 1), MB_CASE_TITLE) . mb_substr($str, 1, null);
}


Эта функция делает первую букву строки заглавной (для многобайтовых строк, например, для UTF-8).

Разбор:
Параметры функции:

$str: строка, первую букву которой нужно сделать заглавной.
$encoding: кодировка строки (по умолчанию null, т.е. используется текущая кодировка).
Проверка на наличие кодировки: Если указана кодировка, то для работы с многобайтовыми символами используется функция mb_substr, которая обрабатывает строку в указанной кодировке.

Приведение первой буквы к верхнему регистру:

mb_convert_case(mb_substr($str, 0, 1, $encoding), MB_CASE_TITLE, $encoding)

Сначала извлекается первый символ строки mb_substr($str, 0, 1, $encoding), затем с помощью mb_convert_case этот символ приводится к заглавной букве (используется параметр MB_CASE_TITLE, который преобразует первый символ к верхнему регистру).

Остальная часть строки: После того как первая буква стала заглавной, к ней добавляется остальная часть строки (с помощью mb_substr($str, 1, null, $encoding)).

Возврат строки: Функция возвращает строку с первой заглавной буквой.

Пример работы:

echo mb_ucfirst("hello world");


Результат:

Hello world

3. Функция mb_lcfirst

function mb_lcfirst($str, $encoding = null)
{
    if ($encoding) {
        return mb_strtolower(mb_substr($str, 0, 1, $encoding), $encoding)
            . mb_substr($str, 1, null, $encoding);
    }
    return mb_strtolower(mb_substr($str, 0, 1)) . mb_substr($str, 1, null);
}

 

Эта функция делает первую букву строки строчной (для многобайтовых строк, например, для UTF-8).

Разбор:
Параметры функции:

$str: строка, первую букву которой нужно сделать строчной.
$encoding: кодировка строки (по умолчанию null).
Проверка на наличие кодировки: Так же, как и в функции mb_ucfirst, здесь проверяется, указана ли кодировка. Если кодировка есть, используются функции mb_substr и mb_strtolower для обработки строки в этой кодировке.

Приведение первой буквы к нижнему регистру:

mb_strtolower(mb_substr($str, 0, 1, $encoding), $encoding)


Первая буква строки преобразуется в строчную с помощью mb_strtolower.

Остальная часть строки: Остальная часть строки добавляется без изменений с помощью mb_substr($str, 1, null, $encoding).

Возврат строки: Функция возвращает строку с первой строчной буквой.

Пример работы:

echo mb_lcfirst("Hello World");


Результат:

hello World


Заключение
cot_wraptext — функция для оборачивания текста с заданной длиной строки. Она обрабатывает текст с учетом HTML-тегов, если они присутствуют.
mb_ucfirst и mb_lcfirst — функции для обработки первой буквы строки (приведения ее к верхнему или нижнему регистру) в многобайтовых строках, таких как UTF-8.
Эти функции полезны для работы с текстом в веб-разработке, особенно если вам нужно учитывать локализацию или многобайтовые кодировки.

4 минут чтения Administrator

Комментарии (0)

Комментарии отсутствуют
Добавление комментариев доступно только зарегистрированным пользователям

Автор контента

Administrator

Оффлайн

Administrator

Последняя авторизация: 05.07.2026 18:32

  • Страница размещена: 22.01.2025 21:55
  • Последнее обновление: 22.01.2025 21:59