Introduction
Understanding how to format strings is essential for PHP developers. This article explores printf() and sprintf(), two important functions that enable fine-grained string manipulation and output formatting in PHP.
What are the printf() and sprintf() Functions?
The printf() function outputs a formatted string to the browser, whereas sprintf() returns the formatted string without outputting it. Both functions take a string format followed by a variable number of arguments and provide a way of inserting those arguments into the string in various formats.
Syntax
printf(string $format [, mixed $args [, mixed $... ]])
sprintf(string $format [, mixed $args [, mixed $... ]])Basic Usage
To use printf(), simply pass the format string followed by the variables you want to include:
<?php
printf("Hello, %s!", "world");
?>
sprintf() works similarly but returns the formatted string:
<?php
$formatted = sprintf("Hello, %s!", "world");
echo $formatted;
?>
Format Specifiers
Both functions use format specifiers that start with a percent sign (%) followed by a character that indicates the type of value to insert:
- %s – string
- %d – integer (decimal)
- %f – floating point number
Advanced Formatting
Beyond simple placeholders, printf() and sprintf() can control padding, alignment, width, and precision:
<?php
printf("User ID: %08d", 123);
printf("%.2f", 123.456);
sprintf("%-10s", "left aligned");
?>
Positional Arguments
Positional arguments allow you to specify the order of variables, which is especially useful when a variable should appear multiple times:
<?php
printf("%2\$s is %1\$d years old.", 25, "John");
sprintf("The %2\$s contains %1\$d monkeys.", 6, "tree");
?>
Using printf() and sprintf() with Arrays
With vsprintf() and vprintf(), you can format strings using arrays:
<?php
$values = array(3.142, "pi");
echo sprintf("The value of %2\$s is %1\$0.2f", $values);
?>
Complex Examples
In more complex scenarios, such as localizing formatted numbers, printf() and sprintf() can be combined with other functions like setlocale() and number_format():
<?php
setlocale(LC_MONETARY, "en_US");
printf("You owe %s.", money_format("%i", 1000));
?>
Summary
printf() and sprintf() offer powerful capabilities for string formatting in PHP. They make it simple to format strings for user display or processing, support a wide variety of datatypes, and allow for complex formatting logic that can be reused across different parts of an application.