PHP 8.4: Mbstring: Новые функции mb_trim, mb_ltrim и mb_rtrim

Источник: «PHP 8.4: Mbstring: New mb_trim, mb_ltrim, and mb_rtrim functions»
В PHP 8.4 добавлены эквиваленты функции mb_ для существующих функций trim, ltrim и rtrim.

Функции trim/ltrim/rtrim удаляют символы пробела как из начала, так и из конца строки. По умолчанию удаляются пробелы (), символы табуляции (\t), LF (\n), CR (\r), NULL-byte (\0) и вертикальная табуляция (\v).

Новые функции mb_trim, mb_ltrim и mb_rtrim поддерживают мультибайтовые строки, а также обрезку любых мультибайтовых символов. Список обрезаемых по умолчанию пробельных символов также обновлён и теперь включает блок Unicode Z и некоторые другие символы, которые обычно обрезаются. Список символов, которые необходимо обрезать, может быть указан в качестве необязательного параметра.

Функция trim() и её варианты поддерживают определение диапазона символов с помощью нотации .... Например, trim('testABC', 'A...E') эквивалентна trim('testABC', 'ABCDE'). Это не поддерживается в mb_trim() и других вариантах.

Синопсисы функций

Функции mb_trim, mb_ltrim и mb_rtrim повторяют сигнатуры функций trim, ltrim и rtrim с обновлённым списком символов по умолчанию для обрезки, с дополнительным параметром $encoding.

Сравнение символов, обрезаемых по умолчанию в вариантах trim() и mb_trim(), см. в Символы, удаляемые по умолчанию.

Функция mb_trim

Безопасное мультибайтовое удаление пробелов (или других символов) из начала и конца строки.

/**
* Multi-byte safely strip white-spaces (or other characters) from the beginning and end of a string.
*
* @param string $string The string that will be trimmed.
* @param string $characters Optionally, the stripped characters can also be specified using the $characters parameter. Simply list all characters that you want to be stripped.
* @param string|null $encoding The encoding parameter is the character encoding.
*
* @return string The trimmed string.
*/

function mb_trim(string $string, string $characters = " \f\n\r\t\v\x00\u{00A0}\u{1680}\u{2000}\u{2001}\u{2002}\u{2003}\u{2004}\u{2005}\u{2006}\u{2007}\u{2008}\u{2009}\u{200A}\u{2028}\u{2029}\u{202F}\u{205F}\u{3000}\u{0085}\u{180E}", ?string $encoding = null): string {}

Функция mb_ltrim

Безопасное мультибайтовое удаление пробелов (или других символов) из начала строки.

/**
* Multi-byte safely strip white-spaces (or other characters) from the beginning of a string.
*
* @param string $string The string that will be trimmed.
* @param string $characters Optionally, the stripped characters can also be specified using the $characters parameter. Simply list all characters that you want to be stripped.
* @param string|null $encoding The encoding parameter is the character encoding.
*
* @return string The trimmed string.
*/

function mb_ltrim(string $string, string $characters = " \f\n\r\t\v\x00\u{00A0}\u{1680}\u{2000}\u{2001}\u{2002}\u{2003}\u{2004}\u{2005}\u{2006}\u{2007}\u{2008}\u{2009}\u{200A}\u{2028}\u{2029}\u{202F}\u{205F}\u{3000}\u{0085}\u{180E}", ?string $encoding = null): string {}

Функция mb_rtrim

Безопасное мультибайтовое удаление пробелов (или других символов) из конца строки.

/**
* Multi-byte safely strip white-spaces (or other characters) from the end of a string.
*
* @param string $string The string that will be trimmed.
* @param string $characters Optionally, the stripped characters can also be specified using the $characters parameter. Simply list all characters that you want to be stripped.
* @param string|null $encoding The encoding parameter is the character encoding.
*
* @return string The trimmed string.
*/

function mb_rtrim(string $string, string $characters = " \f\n\r\t\v\x00\u{00A0}\u{1680}\u{2000}\u{2001}\u{2002}\u{2003}\u{2004}\u{2005}\u{2006}\u{2007}\u{2008}\u{2009}\u{200A}\u{2028}\u{2029}\u{202F}\u{205F}\u{3000}\u{0085}\u{180E}", ?string $encoding = null): string {

Символы, удаляемые по умолчанию

В следующей таблице приведены символы, удаляемые по умолчанию функциями trim() (включая ltrim() и rtrim()) и mb_trim() (включая mb_ltrim() и mb_rtrim()).

НазваниеСимвол(ы)/RegexpПредставление Unicode/RegexУдаляется trim()Удаляется mb_trim
Пробел\u{0020}
Табуляция\t\u{0009}
Конец строки\n\u{000A}
Вертикальная табуляция\v\u{000B}
Возврат каретки\r\u{000D}
Прогон страницы\f\u{000C}
Разделитель пробелов Unicode\p{Z}
Нулевой байт\0
Следующая строка\u{0085}
Монгольский разделитель гласных\u{180E}

PHP полифилл

Можно имитировать функциональность новых функций mb_trim, mb_ltrim и mb_rtrim, используя PHP полифилл с регулярным выражением.

Смотрите polyfills/mb-trim для полного полифилла, предоставляющего новые функции для старых версий PHP. Его можно установить через composer:

composer require polyfills/mb-trim

Влияние на обратную совместимость

mb_trim, mb_ltrim и mb_rtrim — новые функции, объявленные в глобальном пространстве имён. Это изменение не должно вызвать влияния на обратную совместимость, если только не существует функций с такими же именами.

Эти функции можно реализовать в пользовательском PHP-коде. Полифилл.

Дополнительные материалы

Предыдущая Статья

PHP 8.4: phpinfo показывает информацию о размере целого числа

Следующая Статья

PHP 8.4: Новые методы DateTime(Immutable)::createFromTimestamp