PHP 버전
8.3.0
mb_str_pad(주어진_문자열, 지정한_길이[, 채우길_원하는_문자열[, 채우는_위치][, 인코딩]]);
/* mb_str_pad(주어진_문자열, 지정한_길이[, 채우길_원하는_문자열[, 채우는_위치][, 인코딩]]); */

$str = '안녕하세요';  // 주어진 문자열(문자열의 길이: 5)

/////////////////////////////////////////////////

// 지정한 길이: 10, 채우길 원하는 문자열: "*", 채우는_위치: 왼쪽, 인코딩: UTF-8
echo mb_str_pad($str, 10, '*', STR_PAD_LEFT, 'UTF-8'); // 출력: '*****안녕하세요'

// 지정한 길이: 10, 채우길 원하는 문자열: "*", 채우는_위치: 오른쪽, 인코딩: UTF-8
echo mb_str_pad($str, 10, '*', STR_PAD_RIGHT, 'UTF-8'); // 출력: '안녕하세요*****'

// 지정한 길이: 10, 채우길 원하는 문자열: "*", 채우는_위치: 양쪽, 인코딩: UTF-8
echo mb_str_pad($str, 10, '*', STR_PAD_BOTH, 'UTF-8'); // 출력: '**안녕하세요***'

// 지정한 길이: 10, 채우길 원하는 문자열: 공백 문자, 채우는_위치: 왼쪽, 인코딩: UTF-8
echo mb_str_pad($str, 10, ' ', STR_PAD_LEFT, 'UTF-8'); // 출력: '     안녕하세요'

// 지정한 길이: 10, 채우길 원하는 문자열: '*@', 채우는_위치: 왼쪽, 인코딩: UTF-8
echo mb_str_pad($str, 10, '*@', STR_PAD_LEFT, 'UTF-8'); // 출력: '*@*@*안녕하세요'

// 지정한 길이: 4, 채우길 원하는 문자열: "*", 채우는_위치: 왼쪽, 인코딩: UTF-8
// 지정한 길이가 문자열 길이보다 작으면 주어진 문자열이 그대로 반환됩니다.
echo mb_str_pad($str, 4, '*', STR_PAD_LEFT, 'UTF-8'); // 출력: '안녕하세요'
mb_str_pad(
    string $string,
    int $length,
    string $pad_string = " ",
    int $pad_type = STR_PAD_RIGHT,
    ?string $encoding = null
): string
mb_str_pad('안녕하세요', 10, '0', STR_PAD_LEFT, 'UTF-8');
// '00000안녕하세요'
// 왼쪽에서부터 $pad_string('0')을 반복하여 목표 길이를 맞춥니다.

mb_str_pad('안녕하세요', 10, '123', STR_PAD_LEFT, 'UTF-8');
// '123123안녕하세요' → X
// 실제 결과: '12312안녕하세요'
// $pad_string은 필요한 길이만큼만 잘려서 사용됩니다.

mb_str_pad('안녕하세요', 4, '*', STR_PAD_LEFT, 'UTF-8');
// '안녕하세요'
// 지정한 길이가 문자열 길이보다 작으면 주어진 문자열이 그대로 반환됩니다.
$str = '안녕하세요'; // 주어진 문자열(문자열의 길이: 5)

// 지정한 길이: 10, 채우길 원하는 문자열: "*@"
$result_str = mb_str_pad($str, 10, '*@', STR_PAD_LEFT, 'UTF-8');
echo $result_str; // 출력: '*@*@*안녕하세요'
// 제품 리스트 예제
$items = [
    [ 'name' => '커피', 'price' => 4500 ],
    [ 'name' => '도넛',  'price' => 2000 ],
    [ 'name' => '라떼',  'price' => 5000 ]
];

// 컬럼 너비 지정 (제품명 10자, 가격 5자)
$nameWidth  = 10;
$priceWidth = 5;
$fillChar   = '.';
$encoding   = 'UTF-8';

echo '--- PRODUCT LIST ---' . "\n";

foreach ($items as $item) {
    // 제품명: 뒤쪽을 '.'으로 채워 10자 확보
    $paddedName = mb_str_pad($item['name'], $nameWidth, $fillChar, STR_PAD_RIGHT, $encoding);

    // 가격: 앞쪽을 공백으로 채워 5자 확보
    $paddedPrice = mb_str_pad((string)$item['price'], $priceWidth, ' ', STR_PAD_LEFT, $encoding);

    // 출력: "커피........  4500원" 형태
    echo $paddedName . ' ' . $paddedPrice . '원' . "\n";
}

/*
출력:
--- PRODUCT LIST ---
커피........  4500원
도넛........  2000원
라떼........  5000원
*/