현재 위치: > 최신 기사 목록> Sprintf를 사용하여 문자열 출력을 정렬하기위한 팁

Sprintf를 사용하여 문자열 출력을 정렬하기위한 팁

gitbox 2025-05-08

PHP 프로그래밍에서는 출력을 더 명확하고 읽기 쉽게 만들기 위해 문자열 출력을 형식화해야합니다. PHP는 출력을 포맷하기위한 다양한 방법을 제공하며 가장 일반적으로 사용되는 것은 Sprintf 함수입니다. Sprintf 함수는 형식의 문자열을 생성하는 데 사용될 수 있으며 출력 컨텐츠를 정렬 할 수 있습니다. 다음으로 Sprintf 함수를 사용하여 문자열 정렬을 달성하는 방법을 소개합니다.

Sprintf 함수는 무엇입니까?

PHPSprintf 함수는 문자열 출력을 포맷하는 데 사용되며 기본 구문은 다음과 같습니다.

 sprintf(format, arg1, arg2, ...)
  • 형식 : 출력 문자열의 형식을 지정합니다.

  • Arg1, Arg2, ... : 형식 컨트롤러에 따라 해당 매개 변수를 형식 문자열로 전달합니다.

포맷 된 문자열에서 자리 표시자를 사용하여 정수, 부동 값 또는 문자열과 같은 매개 변수의 형식을 정의 할 수 있습니다.

문자열 정렬의 기본 방법

문자열 정렬에 sprintf 함수를 사용할 때는 주로 형식 제어 문자의 너비 및 정렬 기호를 사용합니다. 구체적으로, 일반적으로 사용되는 정렬 방법에는 좌회전, 오른쪽 정렬 및 중앙 정렬이 포함됩니다.

1. 오른쪽 정렬

기본적으로 Sprintf는 출력 컨텐츠를 올바른 정렬합니다. 다른 형식 컨트롤러를 지정하지 않으면 Sprintf는 컨텐츠를 자동으로 올바르게 정렬합니다.

 <?php
$name = "Alice";
$age = 30;
echo sprintf("|%-10s|%-3d|\n", $name, $age);
?>

위의 코드에서 %-10s는 문자열을 왼쪽으로 정렬하고 10 자의 너비를 차지하고 %-3d는 숫자가 3 자의 너비를 차지하게 만듭니다.

출력 결과 :

 |Alice     |30 |

2. 좌회전 정렬

컨텐츠를 정렬하려면 - 기호를 사용할 수 있습니다.

 <?php
$name = "Alice";
$age = 30;
echo sprintf("|%-10s|%-3d|\n", $name, $age);
?>

이로 인해 출력 내용이 정렬되어 지정된 너비를 차지합니다.

 |Alice     |30 |

3. 정렬 센터

Sprintf는 기본적으로 센터링 정렬을 지원하지 않기 때문에 센터링 정렬에는 약간 더 복잡한 작업이 필요합니다. 그러나 너비와 패딩 캐릭터를 영리하게 활용하여 센터 정렬을 달성 할 수 있습니다.

 <?php
function centerAlign($str, $width) {
    $padding = $width - strlen($str);
    $left = floor($padding / 2);
    $right = ceil($padding / 2);
    return str_repeat(" ", $left) . $str . str_repeat(" ", $right);
}

$name = "Alice";
$age = 30;
echo "|" . centerAlign($name, 10) . "|";
echo centerAlign($age, 3) . "|\n";
?>

이 함수는 먼저 왼쪽과 오른쪽의 빈 영역을 계산 한 다음 문자열을 중간으로 채 웁니다. 이것은 중앙 정렬을 달성합니다.

출력 결과 :

 |  Alice   | 30 |

실제 응용 프로그램 : URL 출력 정렬

때때로 우리는 URL과 같은 문자열을 출력 해야하는데, 이는 서식 정렬이 필요할 수 있습니다. 여러 URL과 설명이있는 목록이 있다고 가정합니다. URL을 정렬하고 싶습니다. 다음은 sprintf를 사용하여 정렬 URL 출력을 형식화하는 예입니다.

 <?php
$urls = [
    "https://gitbox.net/first-url" => "First description",
    "https://gitbox.net/second-url" => "Second description",
    "https://gitbox.net/third-url" => "Third description"
];

echo sprintf("|%-35s|%-20s|\n", "URL", "Description");
echo str_repeat("-", 60) . "\n";

foreach ($urls as $url => $desc) {
    echo sprintf("|%-35s|%-20s|\n", $url, $desc);
}
?>

이 코드는 URL 목록을 출력하고 각 URL이 고정 너비로 ​​정렬되도록합니다. URL의 도메인 이름을 gitbox.net 으로 바꾸므로 출력 결과는 다음과 같습니다.

 |URL                                |Description          |
------------------------------------------------------------
|https://gitbox.net/first-url       |First description    |
|https://gitbox.net/second-url      |Second description   |
|https://gitbox.net/third-url       |Third description    |