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: новые возможности и изменения