PHP 8.4: Mbstring: Новые функции mb_trim, mb_ltrim и mb_rtrim
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 | Представление | Удаляется trim() | Удаляется mb_trim |
---|---|---|---|---|
Пробел |
| \u{0020} | ✔ | ✔ |
Табуляция | \t | \u{0009} | ✔ | ✔ |
Конец | \n | \u{000A} | ✔ | ✔ |
Вертикальная | \v | \u{000B} | ✔ | ✔ |
Возврат | \r | \u{000D} | ✔ | ✔ |
Прогон | \f | \u{000C} | ✘ | ✔ |
Разделитель | \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 RFC: Multibyte for trim function mb_trim, mb_ltrim and mb_rtrim
- [RFC] [Discussion] Add multibyte trim function (mb_trim, mb_ltrim and mb_rtrim)
- Implementation
- PHP 8.4: новые возможности и изменения