Дополнение строки до заданной длины с левого края в PHP

Стандартная функция str_pad() с константой STR_PAD_LEFT

В PHP нет отдельной функции для данной задачи, но есть общая функция дополнения строки — str_pad(). В 4-й аргумент этой функции нужно передать константу STR_PAD_LEFT. Однако данная функция НЕБЕЗОПАСНА для многобайтных строк, нужно использовать альтернативную реализацию.

Альтернативная функция str_pad() с константой STR_PAD_LEFT

Исходный код

class StringExtension {

	/**
	 * @param string $string
	 * @param int $padLength
	 * @param string $padString
	 * @param string $encoding
	 * @return string
	 */
	public static function padLeft($string, $padLength, $padString = ' ', $encoding = null) {
		$string = (string) $string;
		$padLength = (int) $padLength;
		$padString = (string) $padString;
		$encoding = ($encoding === null) ? mb_internal_encoding() : (string) $encoding;
		if ($padLength && ($padStringLength = mb_strlen($padString, $encoding))) {
			$padLength -= mb_strlen($string, $encoding);
			if ($padLength > 0) {
				$string = mb_substr(str_repeat($padString, ceil($padLength / $padStringLength)), 0, $padLength, $encoding) . $string;
			}
		}
		return $string;
	}

}

Аргументы

  1. $string — дополняемая строка;
  2. $padLength — нужная длина строки;
  3. $padString — строка дополнения;
  4. $encoding — кодировка.

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

Возвращает строку string, дополненную до длины padLength с левого края.

Особенности

БЕЗОПАСНА для многобайтных строк.