Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x
  2. Mbstring.php

function Mbstring::mb_str_pad

File

vendor/symfony/polyfill-mbstring/Mbstring.php, line 837

Class

Mbstring
Partial mbstring implementation in PHP, iconv based, UTF-8 centric.

Namespace

Symfony\Polyfill\Mbstring

Code

public static function mb_str_pad(string $string, int $length, string $pad_string = ' ', int $pad_type = \STR_PAD_RIGHT, ?string $encoding = null) : string {
    if (!\in_array($pad_type, [
        \STR_PAD_RIGHT,
        \STR_PAD_LEFT,
        \STR_PAD_BOTH,
    ], true)) {
        throw new \ValueError('mb_str_pad(): Argument #4 ($pad_type) must be STR_PAD_LEFT, STR_PAD_RIGHT, or STR_PAD_BOTH');
    }
    if (null === $encoding) {
        $encoding = self::mb_internal_encoding();
    }
    else {
        self::assertEncoding($encoding, 'mb_str_pad(): Argument #5 ($encoding) must be a valid encoding, "%s" given');
    }
    if (self::mb_strlen($pad_string, $encoding) <= 0) {
        throw new \ValueError('mb_str_pad(): Argument #3 ($pad_string) must be a non-empty string');
    }
    $paddingRequired = $length - self::mb_strlen($string, $encoding);
    if ($paddingRequired < 1) {
        return $string;
    }
    switch ($pad_type) {
        case \STR_PAD_LEFT:
            return self::mb_substr(str_repeat($pad_string, $paddingRequired), 0, $paddingRequired, $encoding) . $string;
        case \STR_PAD_RIGHT:
            return $string . self::mb_substr(str_repeat($pad_string, $paddingRequired), 0, $paddingRequired, $encoding);
        default:
            $leftPaddingLength = floor($paddingRequired / 2);
            $rightPaddingLength = $paddingRequired - $leftPaddingLength;
            return self::mb_substr(str_repeat($pad_string, $leftPaddingLength), 0, $leftPaddingLength, $encoding) . $string . self::mb_substr(str_repeat($pad_string, $rightPaddingLength), 0, $rightPaddingLength, $encoding);
    }
}

API Navigation

  • Drupal Core 11.1.x
  • Topics
  • Classes
  • Functions
  • Constants
  • Globals
  • Files
  • Namespaces
  • Deprecated
  • Services
RSS feed
Powered by Drupal