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-коде. Полифилл.