php
PHP - sprintf 함수
string sprintf ( string $format [, mixed $args [, mixed $... ]] )
(PHP 4, PHP 5)
다음은 0 의 값이 아닌 # 문자로 채우는 방법입니다. 문자 앞에 ' 를 붙여줍니다.
(PHP 4, PHP 5)
형 지시자
이 함수는 문자열 format 에 따라 생성한 문자열을 반환합니다. 변환 지시자는 퍼센트 기호(%)에 다음 표의 형 지시자들이 붙어서 구성됩니다. 참고로 printf 함수는 브라우저로 바로 출력한다는 점 말고는 동일합니다.포 맷 | 설 명 |
---|---|
% | 퍼센트 문자. 인자는 필요하지 않습니다. |
b | 정수를 2진수로 표현합니다. |
c | 정수를 아스키값으로 표현합니다. |
d | 정수를 부호 있는 10진수로 표현합니다. |
e | 정밀도 지정어는 PHP 5.2.1부터 소수점 아래 자리 수를 정합니다. 이전 버전에서는 유효숫자의 갯수(하나 적음)로 취급했었습니다. (예. 1.2e+2) |
u | 정수를 부호 없는 10진수로 표현합니다. |
f | 부동소수점 실수를 소수로 표현합니다. |
o | 정수를 8진수로 표현합니다. |
s | 문자열로 표현합니다. |
x | 정수를 16진수(소문자 표시)로 표현합니다. |
X | 정수를 16진수(대문자 표시)로 표현합니다. |
<?php
$n = 43951789;
$u = -43951789;
$c = 65; // 아스키 65는 'A'
// 이중 %% 는 '%' 문자를 출력합니다.
printf("%%b = '%b'\n", $n); // 2진 표현
// 결과: %b = '10100111101010011010101101'
printf("%%c = '%c'\n", $c); // 아스키 문자 출력, chr() 함수와 동일
// 결과: %c = 'A'
printf("%%d = '%d'\n", $n); // 표준 정수
// 결과: %d = '43951789'
printf("%%e = '%e'\n", $n); // 정밀도 표현
// 결과: %e = '4.395179e+7'
printf("%%u = '%u'\n", $n); // 양의 정수에 대한 부호 없는 정수 표현
// 결과: %u = '43951789'
printf("%%u = '%u'\n", $u); // 음의 정수에 대한 부호 없는 정수 표현
// 결과: %u = '4251015507'
printf("%%f = '%f'\n", $n); // 부동소수점 표현
// 결과: %f = '43951789.000000'
printf("%%o = '%o'\n", $n); // 8진 표현
// 결과: %o = '247523255'
printf("%%s = '%s'\n", $n); // 문자열 표현
// 결과: %s = '43951789'
printf("%%x = '%x'\n", $n); // 16진 표현 (소문자)
// 결과: %x = '29ea6ad'
printf("%%X = '%X'\n", $n); // 16진 표현 (대문자)
// 결과: %X = '29EA6AD'
?>
부호 지시자
형 지시자 앞에 부호 (+나 -)가 올 수 있는데, 이를 부호 지시자라 합니다. 부호 지시자는 다음과 같이 사용합니다.<?php
$n = 43951789;
$u = -43951789;
printf("%%+d = '%+d'\n", $n); // 양의 정수에 대한 부호 지시자
// 결과: %+d = '+43951789'
printf("%%+d = '%+d'\n", $u); // 음의 정수에 대한 부호 지시자
// 결과: %+d = '-43951789'
?>
패딩 지시자
패딩 지시자는 빈 자릿수를 채워 주는 문자를 지정하며, 공백문자나 0 (제로 문자)가 올 수 있습니다. 문자를 지정하지 않으면, 기본 공백 문자로 채워지게 되며, 사용자 문자를 정의할 때는 패딩 문자 앞에 작은따옴표(')를 붙여서 사용합니다.<?php
$year = 2011;
$month = 8;
$day = 30;
// 년도는 4자리 이진수로 표현. 4자리 미만이면 0으로 빈 자릿수를 채웁니다.
// 월은 2자리 이진수로 표현. 2자리 미만이면 0으로 빈 자릿수를 채웁니다.
// 일은 2자리 이진수로 표현. 2자리 미만이면 0으로 빈 자릿수를 채웁니다.
echo sprintf("%04d-%02d-%02d", $year, $month, $day);
// 결과: 2011-08-30
?>
다음은 0 의 값이 아닌 # 문자로 채우는 방법입니다. 문자 앞에 ' 를 붙여줍니다.
<?php
$year = 11;
$month = 8;
$day = 30;
// $year 변수 4자리 미만이면 #문자를 빈 자릿수로 채웁니다.
echo sprintf("%'#4d-%'#2d-%'#2d", $year, $month, $day);
// 결과: ##11-#8-30
?>
다음은 통화 표현 예제 입니다.
다음 예제도 빈 자릿 수 표현입니다.
<?php
$money1 = 68.75;
$money2 = 54.35;
$money = $money1 + $money2;
// 결과 123.1
echo $money;
// 1자리 미만이면,0을 빈 자릿수로 채우고, 소수점은 2자릿 수로 채움
$formatted = sprintf("%01.2f", $money);
//결과: 123.10
?>
다음 예제도 빈 자릿 수 표현입니다.
<?php
$s = 'monkey';
$t = 'many monkeys';
printf("[%s]\n", $s); // 표준 문자열 출력
// 결과: [monkey]
printf("[%10s]\n" $s); // 공백으로 오른쪽 정렬
// 결과: [ monkey]
printf("[%-10s]\n", $s); // 공백으로 왼쪽 정렬
// 결과: [monkey ]
printf("[%010s]\n", $s); // 0 채우기도 문자열에 작동
// 결과: [0000monkey]
printf("[%'#10s]\n", $s); // 사용자 채우기 문자 '#' 사용
// 결과: [####monkey]
printf("[%10.10s]\n", $t); // 왼쪽 정렬이지만 10문자로 자름
// 결과: [many monke]
?>
<?php
function sprintf_nbsp() {
$args = func_get_args();
return str_replace(' ', ' ', vsprintf(array_shift($args), array_values($args)));
}
$format = 'The %d monkeys are attacking the [%10s]!';
$str = sprintf_nbsp($format, 15, 'zoo');
echo $str;
// 결과: The 15 monkeys are attacking the [ zoo]!
?>
0 댓글