프로그래밍/PHP

[PHP] 형식화한 문자열 출력 또는 반환 (printf / sprintf 함수)

떨어지는 용 2019. 1. 14. 22:33

▶PHP 형식화한 문자열 출력 또는 반환 (printf / sprintf 함수)



▶설명


형식화한 문자열(formatted string)을 출력 또는 반환하는 방법을 알아보겠습니다.


  • printf : 형식화한 문자열을 출력합니다.
  • sprintf : 형식화한 문자열을 반환합니다.


두 함수의 사용법은 같습니다!!!


가장 기본적이고 단순한 사용법만 작성하도록 하겠습니다

자세한 내용은 아래의 링크를 참고하여 주시기 바랍니다.


▶사용법


강조 처리된 부분만 필수 입력 사항입니다.


printf(형식 문자열, [인수1, 인수2...])

sprintf(형식 문자열, [인수1, 인수2...])


사용법만으로는 설명이 부족하기 때문에 예제에서 설명하도록 하겠습니다.


▶예제



형 지정어 (문자열) : %s

코드

<?php

$total_pizza = 10;
$my_pizza = 3;

$format = '피자 조각 %s개 중 나의 피자 조각은 %s개입니다.';
printf($format, $total_pizza, $my_pizza);


결과

피자 조각 10개 중 나의 피자 조각은 3개입니다.


문자열 안에 문자열 형 지정어(%s)로 설정했습니다.

총 2개의 %s 값이 존재하기 때문에 2개의 인수를 넘겼습니다.

형 지정어가 전달한 인수로 변경되어 출력되는 것을 확인할 수 있습니다.


만약 형 지정어를 2개로 했는데, 인수의 개수가 부족하면 에러를 반환합니다.


그렇지만 이렇게 사용하면 문자열 안에 들어가는 문자열 형 지정어와 인수의 순서를 맞춰 줘야하는 문제가 있습니다.

아래의 예제를 통해 그 문제를 해결하는 방법을 알아보도록 하겠습니다.


형 지정어 : 인수 번호 지정

코드

<?php

$total_pizza = 10;
$my_pizza = 3;

$format = '피자 조각 %2$s개 중 나의 피자 조각은 %1$s개입니다. 나는 %1$s개를 가진다고!';
printf($format, $my_pizza, $total_pizza);


결과

피자 조각 10개 중 나의 피자 조각은 3개입니다. 나는 3개를 가진다고!


위와 같이 형 지정어를 작성하면 원하는 인수를 여러 번 사용할 수도 있고,

문자열 내에 형 지정어와 인수에 순서를 굳이 맞춰 줄 필요도 없습니다.


※ sprintf 함수는 printf 함수와 동일하게 사용하지만 문자열을 출력하는게 아닌 반환합니다.


▶마치며


오직 문자열에 대한 형 지정어만 언급했습니다.

정수와 이진수 등 다양한 형 지정어에 관해 알기 원하시면,

sprintf 문서를 확인하시기 바랍니다.