Форматирование строк с помощью PHP

PHP

До сих пор мы просто печатали любые строки, которые хотели отобразить прямо в браузере. PHP предоставляет две функции (https://github.com/fi1a/format), которые позволяют вам сначала применить форматирование: округлить двойные числа до заданного числа знаков после запятой, определить выравнивание внутри поля или отобразить данные в соответствии с различными системами счисления. В этом разделе вы рассмотрите несколько опций форматирования, предоставляемых функциями printf() и sprintf() .

Работа с printf()
Если у вас есть опыт работы с C, вы должны быть знакомы с функцией printf() . Версия PHP похожа, но не идентична. printf() требует строкового аргумента, известного как строка управления форматом . Он также принимает дополнительные аргументы разных типов. Строка управления форматом содержит инструкции, указывающие, как отображать эти дополнительные аргументы. Например, в следующем фрагменте функция printf() используется для вывода целого числа в виде десятичной дроби:

printf(«Это мой номер: %d», 55); // печатает «Это мой номер: 55»
В строку управления форматом (первый аргумент) мы включили специальный код, известный как спецификация преобразования .

Спецификация преобразования начинается с символа процента (%) и определяет, как обрабатывать соответствующий аргумент функции printf() . Вы можете включить столько спецификаций преобразования, сколько хотите, в строку управления форматом, если вы отправляете эквивалентное количество аргументов в printf() .

Следующий фрагмент выводит два числа с помощью printf() :

printf(«Первое число: %d< br> \nВторое число: %d< br> \n», 55, 66); // Выход: // Первое число: 55 // Второе число: 66
Первая спецификация преобразования соответствует первому из дополнительных аргументов функции printf() , равному 55. Вторая спецификация преобразования соответствует 66. Буква d после символа процента требует, чтобы данные обрабатывались как десятичное целое число. Эта часть спецификации преобразования является спецификатором типа.

printf() и спецификаторы типов
Вы уже встречались с одним спецификатором типа d , который отображает данные в десятичном формате. В таблице 13.1 перечислены другие доступные спецификаторы типов.

Таблица 13.1. Спецификаторы типа
Спецификатор

Описание

г

Отобразить аргумент как десятичное число

б

Отобразить целое число как двоичное число

с

Отобразить целое число как эквивалент ASCII

ф

Отображать целое число как число с плавающей запятой (двойное)

о

Отображать целое число как восьмеричное число (основание 8)

с

Отобразить аргумент в виде строки

Икс

Отображать целое число как шестнадцатеричное число в нижнем регистре (основание 16)

Икс

Отображение целого числа в виде шестнадцатеричного числа в верхнем регистре (основание 16)

В листинге 13.1 функция printf() используется для отображения одного числа в соответствии с некоторыми спецификаторами типов, перечисленными в таблице 13.1.

Листинг 13.1. Демонстрация некоторых спецификаторов типов
1: < html> 2: < голова> 3: < title> Листинг 13.1. Демонстрация некоторых спецификаторов типов< /title> 4: < /голова> 5: < тело> 6: < ?php 7: $число = 543; 8: printf(«Десятичный: %d< br> «, $число); 9: printf(«Двоичный: %b< br> «, $number ); 10: printf(«Double: %f< br> «, $number); 11: printf(«Восьмеричный: %o< br> «, $число); 12: printf(«Строка: %s< br> «, $number); 13: printf(«Шестнадцатеричный (нижний): %x< br> «, $number ); 14: printf(«Шестнадцатеричный (верхний): %X< br> «, $number ); 15: ?> 16: < /тело> 17: < /html>
Поместите эти строки в текстовый файл с именем листинг 13.1.php и поместите этот файл в корневой каталог документов веб-сервера. При доступе к этому сценарию через веб-браузер он должен выглядеть примерно так, как показано на рис. 13.1. Как видите, printf() — это быстрый способ преобразования данных из одной системы счисления в другую и вывода результата.

Рисунок 13.1. Демонстрация спецификаторов преобразования.
Когда вы указываете цвет в HTML, вы объединяете три шестнадцатеричных числа от 00 до FF, представляющие значения для красного, зеленого и синего цветов. Вы можете использовать printf() для преобразования трех десятичных чисел от 0 до 255 в их шестнадцатеричные эквиваленты:

$красный = 204; $зеленый = 204; $ синий = 204; printf(«#%X%X%X», $red, $green, $blue ); // печатает «#CCCCCC»
Хотя вы можете использовать спецификатор типа для преобразования десятичных чисел в шестнадцатеричные, вы не можете использовать его для определения того, сколько символов должен занимать вывод для каждого аргумента. В цветовом коде HTML каждое шестнадцатеричное число должно быть дополнено двумя символами, что станет проблемой, если мы изменим наши переменные $red , $green и $blue в предыдущем фрагменте, например, чтобы они содержали 1. В итоге мы получим вывод «#111» . Вы можете принудительно вывести начальные нули, используя спецификатор заполнения.

Заполнение вывода с помощью спецификатора заполнения
Вы можете потребовать, чтобы вывод дополнялся начальными символами. Спецификатор заполнения должен следовать непосредственно за знаком процента, с которого начинается спецификация преобразования. Чтобы дополнить вывод ведущими нулями, спецификатор заполнения должен состоять из нуля, за которым следует количество символов, которое вы хотите, чтобы вывод занимал. Если вывод занимает меньше символов, чем это общее количество, разница будет заполнена нулями:

printf(«%04d», 36); // печатает «0036»
Чтобы дополнить вывод начальными пробелами, спецификатор заполнения должен состоять из символа пробела, за которым следует количество символов, которые должен занимать вывод:

printf(«% 4d», 36) // печатает «36»
Браузер не будет отображать несколько пробелов в документе HTML. Вы можете принудительно отображать пробелы и новые строки, разместив теги < PRE> вокруг вывода следующим образом:

< пред> < ?php print «Пробелы будут видны»; ?> < /pre>
Если вы хотите отформатировать весь документ как текст, вы можете использовать функцию header() для изменения заголовка Content-Type :

header(«Тип контента: текстовый/обычный»);
Помните, что ваш скрипт не должен отправлять какие-либо выходные данные в браузер, чтобы функция header() работала должным образом.

Вы можете указать любой символ, кроме пробела или нуля, в спецификаторе заполнения с одинарной кавычкой, за которой следует символ, который вы хотите использовать:

printf(«%’x4d», 36); // печатает «xx36»
Теперь у нас есть инструменты, необходимые для завершения нашего примера HTML-кода. До сих пор мы могли преобразовать три числа, но не могли дополнить их ведущими нулями:

Оставьте ответ

Ваш электронный адрес не будет опубликован.