Удаление пробелов из начала и конца строки в PHP

Стандартная функция trim()

Синтаксис

string trim ( string $string [ , string $chars = " \t\n\r\0\x0B" ] )

Аргументы

  1. $string — обрезаемая строка;
  2. $chars — список символов для удаления; если не передан, то удаляются следующие символы:
    • " " (ASCII 32 (0x20)) — пробел,
    • "\t" (ASCII 9 (0x09)) — символ табуляции,
    • "\n" (ASCII 10 (0x0A)) — символ перевода строки,
    • "\r" (ASCII 13 (0x0D)) — символ возврата каретки,
    • "\0" (ASCII 0 (0x00)) — NUL-байт,
    • "\x0B" (ASCII 11 (0x0B)) — вертикальная табуляция.

Возвращаемое значение

Возвращает строку string, обрезанную с обоих краев.

Особенности

  • Функция trim() правильно работает с многобайтными строками, если список удаляемых символов является однобайтным. Если же во 2-м аргументе была передана многобайтная строка, то функция уже работает неправильно. И необходимо воспользоваться альтернативной реализацией.
  • Функция чувствительна к регистру.

Альтернативная функция trim()

Исходный код

class StringExtension {

	/**
	 * @param string $string
	 * @param string $chars
	 * @return string
	 */
	public static function trimBoth($string, $chars = " \t\n\r\0\x0B") {
		return (string) $chars ? mb_ereg_replace('(^[' . (string) $chars . ']+)|([' . (string) $chars . ']+$)', '', (string) $string) : (string) $string;
	}

}

Аргументы

  1. $string — обрезаемая строка;
  2. $chars — список символов для удаления.

Возвращаемое значение

Возвращает строку string, обрезанную с обоих краев.

Особенности

  • Функция правильно работает и для многобайтного списка удаляемых символов.
  • Функция чувствительна к регистру.