1

Trim: примеры (PHP)

Детальный разбор функционала trim в языке программирования PHP
Раздел: Работа со строками
trim(string string [, string characters]): string

Функция trim в PHP

Функция trim используется для удаления пробельных или других заданных символов с обеих сторон строки. Она часто применяется при обработке пользовательского ввода, чтении данных из файлов или баз данных для очистки строк от нежелательных символов по краям.

Синтаксис и аргументы

Синтаксис функции: trim(string $string, string $characters = " \t\n\r\x0B\x00").

  • $string (обязательный): исходная строка, которую требуется обработать.
  • $characters (опциональный): строка, содержащая символы для удаления. Если аргумент не указан, trim удаляет следующие символы по умолчанию:
    • обычный пробел ( )
    • символ табуляции (\t)
    • символ новой строки (\n)
    • символ возврата каретки (\r)
    • вертикальная табуляция (\x0B)
    • нулевой байт (\x00)

Функция возвращает модифицированную строку.

Базовые примеры

Стандартное использование

Удаление пробелов по умолчанию с обоих концов строки.

$str = "   Пример строки   \n";
echo trim($str);
Пример строки
Указание пользовательских символов

Удаление только определённых символов, например, звёздочек и точек.

$str = "***Пример строки...***";
echo trim($str, '*.');
Пример строки
Удаление диапазона символов

Использование двух точек для указания диапазона ASCII-символов.

$str = "123Пример строки321";
echo trim($str, '1..3');
Пример строки

Похожие функции в PHP

ltrim и rtrim

Функции ltrim и rtrim аналогичны trim, но удаляют символы только с начала (слева) или только с конца (справа) строки соответственно. Их применяют, когда нужна односторонняя очистка.

preg_replace

Функция preg_replace с регулярными выражениями позволяет выполнять более сложные и избирательные операции по удалению или замене символов в любой части строки. Использование оправдано, когда правила очистки выходят за рамки простого удаления с краёв.

filter_var

Функция filter_var с фильтром FILTER_SANITIZE_STRING (устарел в PHP 8.1) или FILTER_SANITIZE_SPECIAL_CHARS предназначена для санации строк, но не выполняет прямую аналогию trim. Основное назначение — очистка от нежелательных тегов и спецсимволов.

Типичные ошибки

Передача массива вместо строки

До PHP 8 это вызывало предупреждение и возвращало null. В PHP 8 будет выброшена TypeError.

// PHP 7.x
$result = trim(['test']);
var_dump($result);
Warning: trim() expects parameter 1 to be string, array given
NULL
Ожидание удаления символов в середине строки

Функция удаляет символы только с концов строки.

$str = "Пример\n\n строки";
echo trim($str);
Пример

 строки
Неявное приведение типов

При передаче нестроковых типов данных, они преобразуются в строку, что иногда приводит к неожиданным результатам.

echo trim(true); // Выведет '1'
echo trim(null); // Выведет пустую строку ''
1

Изменения в новых версиях PHP

PHP 8.0

Была изменена обработка нестроковых аргументов. Если в trim передаётся значение, отличное от строки, выбрасывается исключение TypeError. Ранее выдавалось предупреждение и возвращалось null.

PHP 8.1

Значительных изменений в поведении функции не было. Однако продолжается общий процесс ужесточения типизации языка.

Расширенные примеры

Очистка данных CSV-файла

Функция полезна при обработке строк, прочитанных из CSV, где могут быть лишние пробелы.

Пример php
$csvLine = "  Значение1,  Значение2 ,Значение3  \r\n";
$cleanValues = array_map('trim', explode(',', $csvLine));
print_r($cleanValues);
Array
(
    [0] => Значение1
    [1] => Значение2
    [2] => Значение3
)
Удаление нестандартных символов форматирования

Можно удалять символы, характерные для текста, скопированного из богатых текстовых редакторов.

Пример php
$text = "\x00\x0B\t\n\rВажный текст\t\n\r\x0B\x00";
echo '[' . trim($text) . ']';
[Важный текст]
Сравнение производительности с preg_replace

Для простого удаления пробелов trim значительно быстрее, чем использование регулярных выражений.

Пример php
$str = "   текст   ";
$trimmed = trim($str);
$preged = preg_replace('/^\s+|\s+$/', '', $str);
var_dump($trimmed === $preged); // Обе операции дают одинаковый результат
bool(true)
Работа с юникодными пробелами

Важное ограничение: стандартная функция trim не удаляет юникодные пробелы (например, неразрывный пробел U+00A0). Для этого потребуется preg_replace или mb_trim.

Пример php
$str = "\xC2\xA0юникодный пробел\xC2\xA0"; // Неразрывный пробел в UTF-8
echo 'Длина после trim: ' . strlen(trim($str));
// Решение с регулярным выражением
$cleaned = preg_replace('/^[\s\p{Z}]+|[\s\p{Z}]+$/u', '', $str);
echo '\nДлина после preg_replace: ' . strlen($cleaned);
Длина после trim: 30
Длина после preg_replace: 28

Аналоги в других языках

Python

Метод строк str.strip() аналогичен trim. Также существуют str.lstrip() и str.rstrip().

s = "   текст   "
print(s.strip())  # 'текст'
текст
JavaScript

Метод String.prototype.trim(). ES2019 добавил trimStart() и trimEnd().

let str = "   текст   ";
console.log(str.trim()); // 'текст'
текст
MySQL

Функции TRIM(), LTRIM(), RTRIM(). TRIM позволяет явно указывать сторону удаления.

SELECT TRIM(LEADING '.' FROM '...текст...') AS result;
текст...
Java

Метод String.trim() удаляет пробельные символы (с кодовыми точками <= U+0020). С Java 11 используется String.strip(), который учитывает Unicode.

PHP trim function comments

En
Trim Strip whitespace (or other characters) from the beginning and end of a string