How to print a formatted string in PHP
Many candidates are rejected or down-leveled in technical interviews due to poor performance in behavioral or cultural fit interviews. Ace your interviews with this free course, where you will practice confidently tackling behavioral interview questions.
Overview
A string is a data type that could be alphanumeric, numeric or alphabetical, but is enclosed in a single or double quote. Strings are displayed on the screen using regular output commands in PHP.
A formatted string is an interpolated string literal where placeholders are used in place of an actual value and are replaced during the evaluation of such strings with the value. It contains values that will be converted to the indicated type during evaluation.
Below is a sample formatted string.
$formstr = "There are %u really good persons %f out there %s.";
The printf() function in PHP is used to print formatted strings.
How to use printf() to output a formatted string
First, let’s take a look at the syntax and other vital information about this function.
Syntax
printf($format,$var1, $var2. $varN);
Parameters
- format : This is a required parameter that specifies the string and how the variables it contains should be formatted. These formats have the percent ( % ) symbol placed before them.
In PHP the following format values are used:
- %% : A percent % sign will be returned.
- %b : This will return a binary number.
- %c : This changes ASCII values into characters.
- %d : It returns a signed decimal number (negative, zero or positive).
- %e : It indicates scientific notation using lowercase (i.e., 1.2e+2).
- %E : It indicates scientific notation using uppercase (i.e., 1.2E+2)
- %E : This is a decimal number that is unsigned (that is >= 0).
- %f : This is a floating-point number.
- %s : This formats as a string.
- var1,var2. varN : These are the set of variables whose values will be formatted. It could be just one or as many as you want. If there are many of these variables, they should be placed sequentially in the order of appearance of their placeholders and conversion format in the $format parameter.
Return value
This function has a return value of the outputted string’s length.
PHP Output Formatting
When it comes to creating output that will be returned to a user browser from PHP, there are a number of functions & language constructs available to achieve this. This article will examine the use of echo, print & printf.
Echo
echo allows for simple outputting of 1 or more strings. The following 4 simple examples which produce the same output.
Echo is a language construct, not a function, even though it can be used in a function form with brackets as shown above for a single string. Echo cannot be called using variable functions. The following example will NOT work.
($val == 5) ? echo 'true' : echo 'false';
Quoting
The type of quotation marks used in the output of a string, influence the generated output. Strings in double quotations will be evaluated by PHP and so any variables will have their contents substituted for the variable name. Whereas single quotes as treated as literals. The following 2 echo statements will produce different outputs, with the variable substituted in the double quote example, but not in the single quote.
$count = 'Two'; echo "$count more please";
$count = 'Two'; echo '$count more please';
The evaluation within double quotes also allows control or escape sequences, such as n for a linefeed & t for a tab. The full list of escape characters is in the PHP manual.
The display of double quotes within a double quoted string, will require use of the escape character, , the backslash.
The same is true for use of the single quote within a single quoted string.
Concatenation
Echo handles multiple string concatenation (with the period operator), or multiple strings passed as parameters, either as literal strings or variables. So the following produce the same output.
$dayPart = 'morning'; echo 'A good ' . $dayPart . '.';
$dayPart = 'morning'; echo 'A good ' , $dayPart , '.';
Short Cut
There is a short cut syntax for echo, with an equals immediately after the short opening tag.
Print works much the same as echo. Again it is a language construct not a function, but unlike echo, print does have a return value (true or false).
The same quoting rules as outlined above apply for print on strings.
Multiple string concatenation (with the period operator) works with print, but multiple strings passed as parameters does not.
Printf
printf outputs a string, according to a supplied format. It allows for some very fine grained output control, and is suited to more complex output creation. The same results can be achieved by use of print or echo, but printf can allow the creation of more succinct and/or maintainable code. printf has the following signature:
printf (string format [, mixed args. ])
where format is a string that has the basic outline with conversion specifications instead of variables, followed by parameters that will be substituted into the format string. The return value is the length of the outputted string. A simple example:
The advantages of printf become more obvious as the number and complexity of substitutions increase.
The format for each conversion specification is: %[-|+][padding character][-][width][.precision]type . Only the leading % and the type specification is mandatory, with the output types as:
b | Argument is treated as an integer, and presented as a binary number. |
c | Argument is treated as an integer, and presented as the character with that ASCII value. |
d | Argument is treated as an integer, and presented as a (signed) decimal number. |
e | Argument is treated as scientific notation (e.g. 1.2e+2). The precision specifier stands for the number of digits after the decimal point since PHP 5.2.1. In earlier versions, it was taken as number of significant digits (one less) |
E | Like %e but uses uppercase letter (e.g. 1.2E+2). |
u | Argument is treated as an integer, and presented as an unsigned decimal number. |
f | Argument is treated as a float, and presented as a floating-point number (locale aware). |
F | Argument is treated as a float, and presented as a floating-point number (non-locale aware). |
g | Shorter of %e and %f. |
G | Shorter of %E and %f. |
o | Argument is treated as an integer, and presented as an octal number. |
s | Argument is treated as and presented as a string. |
x | Argument is treated as an integer and presented as a hexadecimal number (with lowercase letters). |
X | Argument is treated as an integer and presented as a hexadecimal number (with uppercase letters). |
Above modified from PHP manual list of specifiers
The optional elements are:
- sign specifier (- or +)
- padding specifier to the right size string. The default is space.
- alignment specifier. — will make it left justified, with a default of right justified.
- width specifier. Minimum number of characters.
- precision specifier. Period (.) followed by a number that specifies how many digits to be displayed for floating point numbers, or a maximum character limit when applied to a string.
To display an actual % sign, use %% in the format string.
Argument Ordering and reuse
Placeholder substitution need not be done in parameter order, and supplied parameters can be substituted more than once, as shown below:
Функции форматного вывода в PHP
Для форматного вывода в PHP используются две замечательных функции: printf() и sprintf(). У них достаточно много возможностей, которые мы обсудим в этой статье.
Сразу скажу, что разница между printf() и sprintf() лишь в том, что первая выводит строку сразу в выходной поток (например, в браузер), а вторая возвращает её.
Параметр функции — это строка, которая имеет символы с %, называемые спецификаторами, и символы без %, называемых директивами. Директивы остаются неизменными при форматировании, а вот спецификатор приводит к подстановке других параметров функций (следующих за строкой с форматом).
Всего имеется несколько спецификаторов, которые объединяются в одну группу (один общий %), порядок которых следующий:
- Спецификатор заполнения. Позволяет заполнить строку до заданного размера конкретным символом. По умолчанию этим символом является пробел.
- Спецификатор выравнивания. Данный спецификатор позволяет задать выравнивание строки по правому краю (по умолчанию), либо по левому краю (если указать «—«).
- Спецификатор минимальной ширины. Если результат будет иметь меньшую длину строки, то она будет заполнена символами из спецификатора заполнения до указанной ширины.
- Спецификатор точности. Позволяет указать, какое количество знаков после запятой оставить у числа с плавающей точкой.
- Спецификатор типа. Этот спецификатор указывает тип выводимых данных. Их там 8 штук, но на практике используются следующие:
- d — целое число в десятичном виде.
- f — число с плавающей точкой в десятичном виде.
- s — строка.
Давайте разберём классический пример по выводу отформатированной даты:
$year = 2012;
$month = 9;
$day = 28;
printf(«Дата написания статьи: %02d.%02d.%04d», $day, $month, $year);
?>
Нетрудно догадаться, что в результате будет выведена такая строка: «Дата написания статьи: 28.09.2012«. Обратите внимание, сколько групп спецификаторов, столько и параметров передаётся помимо самого формата. Строка «Дата написания статьи: » является директивой, и она остаётся без изменений. Теперь разберём для примера вторую группу спефикаторов, которая отвечает за месяц. Другие группы абсолютно идентичны.
- % — начало группы спецификатора.
- 0 — символ, которым заданный параметр будет заполняться до требуемой ширины.
- 2 — минимальная ширина. Соответственно, если длина строки меньше, то она будет заполнена 0.
- d — выводиться будет как целое число. Если поставить, например, b (ещё один спецификатор типа), то выведится это же число, но в двоичной форме.
Приведу ещё один популярный пример использования функции printf (и sprintf()), связанный с окргулением чисел:
$x = 12.596123;
printf(«%06.2f», $x); // Будет выведено «012.60»
?>
Давайте разберём первый аргумент функции printf():
- % — начало группы спецификатора.
- 0 — символ заполнения до требуемой длины.
- 6 — требуемая длина (точка, безусловно, также входит в эту длину).
- .2 — точность до 2-х знаков после запятой.
- f — тип чисел с плавающей точкой. Собственно, округление имеет смысл только для этого типа.
Как видите, функции printf() и sprintf() позволяют легко решать, на первый взгляд, достаточно сложные задачи. Поэтому Вам обязательно нужно иметь их в своём арсенале.
Создано 28.09.2012 09:32:51
Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!
Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.
Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления
Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.
Порекомендуйте эту статью друзьям:
Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):
- Кнопка:
Она выглядит вот так: - Текстовая ссылка:
Она выглядит вот так: Как создать свой сайт - BB-код ссылки для форумов (например, можете поставить её в подписи):