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

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

Синтаксис

string ltrim ( 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, обрезанную с левого края.

Особенности

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

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

Исходный код

class StringExtension {

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

}

Аргументы

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

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

Возвращает строку string, обрезанную с левого края.

Особенности

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