Symfony\Polyfill\Mbstring
Mbstring::mb_str_pad
Метод класса: Mbstring{}
Хуков нет.
Возвращает
string|false.
Использование
$result = Mbstring::mb_str_pad( $string, $length, $pad_string, $pad_type, ?string $encoding );
- $string(строка) (обязательный)
- .
- $length(int) (обязательный)
- .
- $pad_string(строка)
- .
По умолчанию:' ' - $pad_type(int)
- .
По умолчанию:\STR_PAD_RIGHT - ?string $encoding
- .
По умолчанию:null
Код Mbstring::mb_str_pad() Mbstring::mb str pad CF7 6.2.4.1
public static function mb_str_pad(string $string, int $length, string $pad_string = ' ', int $pad_type = \STR_PAD_RIGHT, ?string $encoding = null)
{
if (null === $encoding) {
$encoding = self::mb_internal_encoding();
} elseif (!self::assertEncoding($encoding, 'mb_str_pad(): Argument #5 ($encoding) must be a valid encoding, "%s" given')) {
return false;
}
if (0 >= $padStringLength = self::mb_strlen($pad_string, $encoding)) {
if (\PHP_VERSION_ID < 80000) {
trigger_error('mb_str_pad(): Argument #3 ($pad_string) must be a non-empty string', \E_USER_WARNING);
return false;
}
throw new \ValueError('mb_str_pad(): Argument #3 ($pad_string) must be a non-empty string');
}
if (!\in_array($pad_type, [\STR_PAD_RIGHT, \STR_PAD_LEFT, \STR_PAD_BOTH], true)) {
if (\PHP_VERSION_ID < 80000) {
trigger_error('mb_str_pad(): Argument #4 ($pad_type) must be STR_PAD_LEFT, STR_PAD_RIGHT, or STR_PAD_BOTH', \E_USER_WARNING);
return false;
}
throw new \ValueError('mb_str_pad(): Argument #4 ($pad_type) must be STR_PAD_LEFT, STR_PAD_RIGHT, or STR_PAD_BOTH');
}
$paddingRequired = $length - self::mb_strlen($string, $encoding);
if ($paddingRequired < 1) {
return $string;
}
switch ($pad_type) {
case \STR_PAD_LEFT:
$leftPaddingLength = $paddingRequired;
break;
case \STR_PAD_RIGHT:
$leftPaddingLength = 0;
break;
default:
$leftPaddingLength = intdiv($paddingRequired, 2);
}
$rightPaddingLength = $paddingRequired - $leftPaddingLength;
return str_repeat($pad_string, intdiv($leftPaddingLength, $padStringLength)).self::mb_substr($pad_string, 0, $leftPaddingLength % $padStringLength, $encoding)
.$string
.str_repeat($pad_string, intdiv($rightPaddingLength, $padStringLength)).self::mb_substr($pad_string, 0, $rightPaddingLength % $padStringLength, $encoding);
}