PHP 프로그래밍에서는 출력을 더 명확하고 읽기 쉽게 만들기 위해 문자열 출력을 형식화해야합니다. PHP는 출력을 포맷하기위한 다양한 방법을 제공하며 가장 일반적으로 사용되는 것은 Sprintf 함수입니다. Sprintf 함수는 형식의 문자열을 생성하는 데 사용될 수 있으며 출력 컨텐츠를 정렬 할 수 있습니다. 다음으로 Sprintf 함수를 사용하여 문자열 정렬을 달성하는 방법을 소개합니다.
PHP 의 Sprintf 함수는 문자열 출력을 포맷하는 데 사용되며 기본 구문은 다음과 같습니다.
sprintf(format, arg1, arg2, ...)
형식 : 출력 문자열의 형식을 지정합니다.
Arg1, Arg2, ... : 형식 컨트롤러에 따라 해당 매개 변수를 형식 문자열로 전달합니다.
포맷 된 문자열에서 자리 표시자를 사용하여 정수, 부동 값 또는 문자열과 같은 매개 변수의 형식을 정의 할 수 있습니다.
문자열 정렬에 sprintf 함수를 사용할 때는 주로 형식 제어 문자의 너비 및 정렬 기호를 사용합니다. 구체적으로, 일반적으로 사용되는 정렬 방법에는 좌회전, 오른쪽 정렬 및 중앙 정렬이 포함됩니다.
기본적으로 Sprintf는 출력 컨텐츠를 올바른 정렬합니다. 다른 형식 컨트롤러를 지정하지 않으면 Sprintf는 컨텐츠를 자동으로 올바르게 정렬합니다.
<?php
$name = "Alice";
$age = 30;
echo sprintf("|%-10s|%-3d|\n", $name, $age);
?>
위의 코드에서 %-10s는 문자열을 왼쪽으로 정렬하고 10 자의 너비를 차지하고 %-3d는 숫자가 3 자의 너비를 차지하게 만듭니다.
출력 결과 :
|Alice |30 |
컨텐츠를 정렬하려면 - 기호를 사용할 수 있습니다.
<?php
$name = "Alice";
$age = 30;
echo sprintf("|%-10s|%-3d|\n", $name, $age);
?>
이로 인해 출력 내용이 정렬되어 지정된 너비를 차지합니다.
|Alice |30 |
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을 정렬하고 싶습니다. 다음은 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 |