PHP | Format Specifiers
Strings are one of the most used Datatype arguably irrespective of the programming language. Strings can be either hardcoded (specified directly by the developer) or formatted (where the basic skeleton is specified and the final string is obtained by incorporating values of other variables). Formatted strings can be defined as a set of segments where each segment may contain an integer, float or even another string.
Formatted strings use Format Specifiers to create the basic structure of the string. Format Specifiers are predefined character sequence that can be used to define the datatype to be stored or displayed as well a how any given value should be formatted i.e. precision, padding etc. Format Specifiers, in general, begin with a percentile symbol or ‘%’ followed by a character sequence that defines the datatype and desired format. When iterating over a format if any format specifier is encountered it is understood by the compiler/interpreter that there exists a corresponding directive whose value is to be formatted and used. Hence, a string may contain no format specifier at all, but if it does at least the same number of directives should be resent as well. In case of excessive directives, some languages just ignore the unrequired and let it execute with a warning.
The following is a brief discussion of the Formats and Datatypes that can be specified in PHP. Each one of them is implemented with a preceding percentile symbol or ‘%’.
- Sign specifier can be used to forcibly display the sign (- or +) to be used on a number. By default, only the – sign is displayed on negative numbers. Using this specifier positive numbers are shown with a preceding +. This can be achieved using a + symbol and can be implemented only upon numeric values. Example,
%+d // Specify the integer along with it's sign (+ or -).
- Padding specifier can be used to specify what character will be used for padding the results to any defined string size. By default, spaces are used as padding. An alternate padding character can be specified by prefixing it with a single quote or ‘. Example,
%'0d // Pad with 0s to achieve the right length.
- Alignment specifier can be used to specify the alignment of the result i.e. whether left-justified or right-justified. By default it is right-justified. Using a – character makes it left-justified. Example,
%-s // Specifies the alignment as left-justified.
- Width specifier can be used to specify the minimum number of characters to be present in the result itself. It can be specified using any number denoting the minimum width. It is seen in use with padding specifier the most. Example,
// Specifies there should be at least 5 digits, %'05d // if less, then 0s are filled to get the desired result.
- Precision Specifier can be used to specify the precision while working with real numbers. A period or ‘.’ followed by an optional decimal digit string that refers to the decimal digits to be displayed after the decimal.
When using this specifier on a string, it specifies the maximum character limit on the string.
%.5f // Defines Real Number Precision. %.2s // Maximum Character to be allowed in a string.
- % : To display %. No directive is required.
- b : The directive refers to an integer and displayed as a binary number.
- c : The directive refers to an integer and displayed as the corresponding ASCII character.
- d : The directive refers to an integer and displayed as a decimal number.
- e : The directive refers to scientific notation (e.g. 2.12e+3).
- E : Alias of ‘e’.
- f : The directive refers to a float and displayed as a real number (locale aware).
- F : The directive refers to a float and displayed as a real number (non-locale aware).
- o : The directive refers to an integer and displayed as an octal number.
- s : The directive is treated and displayed as a string.
- u : The directive refers to an integer and displayed as an unsigned decimal number.
- x : The directive refers to an integer and displayed as a hexadecimal number (with lowercase letters).
- X : The directive refers to an integer and displayed as a hexadecimal number (with uppercase letters).
The Following code illustrates the working of different format specifiers:
Signed Number: +5 Padding and Width 005 015 Precision: 5.00000 Geeks Percentage: 5% Binary: 1111 Octal: 17 Hexadecimal: f Character: A String: GeeksForGeeks RealNumber: 0.200000 Scientific Representation:1.050000e+2