Функция 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.
Эти функции полезны для работы с текстом в веб-разработке, особенно если вам нужно учитывать локализацию или многобайтовые кодировки.
Комментарии (0)
Автор контента
Оффлайн
Administrator
Последняя авторизация: 05.07.2026 18:32
- Страница размещена: 22.01.2025 21:55
- Последнее обновление: 22.01.2025 21:59