(PHP 4, PHP 5)
sprintf — 형식화한 문자열을 반환
포맷 문자열 format 에 따라 생성한 문자열을 반환합니다.
포맷 문자열은 0개 이상의 지시어를 조합합니다: 일반 문자는 (%을 제외하고) 결과에 그대로 복사하고, 변환 특정어는 각각의 인수로 교체한 결과를 가집니다. 이는 sprintf()와 printf()에 모두 적용됩니다.
각각의 변환 특정어는 퍼센트 기호(%)에 다음의 요소들이 붙어서 구성됩니다:
형 지정어는 인수 데이터를 어떤 형으로 취급할지 결정합니다. 가능한 형은:
포맷 문자열은 인수 넘버링/교환을 지원합니다. 다음은 예제입니다:
Example #1 인수 교환
<?php
$format = ;There are %d monkeys in the %s';
printf($format, $num, $location);
?>
이는 "There are 5 monkeys in the tree"를 출력할 것입니다. 그러나, 국제화를 위해서 포맷 문자열을 별도의 파일로 작성하고, 이것을 다음처럼 재작성했다고 생각해봅시다:
Example #2 인수 교환
<?php
$format = 'The %s contains %d monkeys';
printf($format, $num, $location);
?>
문제가 생겼습니다. 포맷 문자열에서의 순서와 코드에서 인수의 순서가 일치하지 않습니다. 여기서 코드를 수정하지 않고, 단순히 포맷 문자열에 어떤 인수를 가져올지를 지정할 수 있습니다. 포맷 문자열을 다음과 같이 작성하면 됩니다:
Example #3 인수 교환
<?php
$format = 'The %2$s contains %1$d monkeys';
printf($format, $num, $location);
?>
코드에 많은 인수를 추가하지 않고도 반복해서 출력할 수 있다는 추가적인 장점이 존재합니다. 예를 들면:
Example #4 인수 교환
<?php
$format = 'The %2$s contains %1$d monkeys.
That\'s a nice %2$s full of %1$d monkeys.';
printf($format, $num, $location);
?>
형식화 문자열 format 에 따라서 생성된 문자열을 반환합니다.
버전 | 설명 |
---|---|
4.0.6 | 인수 넘버링/교환 추가. |
Example #5 printf(): 다양한 예제
<?php
$n = 43951789;
$u = -43951789;
$c = 65; // 아스키 65는 'A'
// 이중 %%에 주목, '%' 문자를 출력합니다.
printf("%%b = '%b'\n", $n); // 2진 표현
printf("%%c = '%c'\n", $c); // 아스키 문자 출력, chr() 함수와 동일
printf("%%d = '%d'\n", $n); // 표준 정수
printf("%%e = '%e'\n", $n); // 과학 표현
printf("%%u = '%u'\n", $n); // 양의 정수에 대한 부호 없는 정수 표현
printf("%%u = '%u'\n", $u); // 음의 정수에 대한 부호 없는 정수 표현
printf("%%f = '%f'\n", $n); // 부동소수점 표현
printf("%%o = '%o'\n", $n); // 8진 표현
printf("%%s = '%s'\n", $n); // 문자열 표현
printf("%%x = '%x'\n", $n); // 16진 표현 (소문자)
printf("%%X = '%X'\n", $n); // 16진 표현 (대문자)
printf("%%+d = '%+d'\n", $n); // 양의 정수에 대한 부호지정어
printf("%%+d = '%+d'\n", $u); // 음의 정수에 대한 부호지정어
?>
위 예제의 출력:
%b = '10100111101010011010101101' %c = 'A' %d = '43951789' %e = '4.39518e+7' %u = '43951789' %u = '4251015507' %f = '43951789.000000' %o = '247523255' %s = '43951789' %x = '29ea6ad' %X = '29EA6AD' %+d = '+43951789' %+d = '-43951789'
Example #6 printf(): 문자열 지정어
<?php
$s = 'monkey';
$t = 'many monkeys';
printf("[%s]\n", $s); // 표준 문자열 출력
printf("[%10s]\n" $s); // 공백으로 오른쪽 정렬
printf("[%-10s]\n", $s); // 공백으로 왼쪽 정렬
printf("[%010s]\n", $s); // 0 채우기도 문자열에 작동
printf("[%'#10s]\n", $s); // 사용자 채우기 문자 '#' 사용
printf("[%10.10s]\n", $t); // 왼쪽 정렬이지만 10문자로 자름
?>
위 예제의 출력:
[monkey] [ monkey] [monkey ] [0000monkey] [####monkey] [many monke]
Example #7 sprintf(): 0으로 채운 정수
<?php
$isodate = sprintf("%04d-%02d-%02d", $year, $month, $day);
?>
Example #8 sprintf(): 통화 표현하기
<?php
$money1 = 68.75;
$money2 = 54.35;
$money = $money1 + $money2;
// echo $money 는 "123.1"를 출력합니다;
$formatted = sprintf("%01.2f", $money);
// echo $formatted 는 "123.10"를 출력합니다.
?>
Example #9 sprintf(): 과학 표현
<?php
$number = 362525200;
echo sprintf("%.3e", $number); // 3.625e+8 출력
?>