создание и продвижение сайта (вбиваю в ТОП-10, как гвозди)Настройка и сопровождение платной рекламы яндекс.директ

PHP. Руководство по PHP. 2005

sprintf

Пред.

След.

sprintf

(PHP 3, PHP4, PHP 5)sprintf -- Возвращает отформатированную строку

Описание

string sprintf (string format [, mixed args])

Возвращает строку, созданную с использованием строки формата format.

Строка формата состоит из директив: обычных символов (за исключением %), которые копируются в результирующую строку, и описатели преобразований, каждый из которых заменяется на 1 из параметров. Это относится также к fprintf(), sprintf() и printf().

Каждый описатель прреобразований состоит из знака процента (%), за которым следует 1 или более дополнительных элементов (в том порядке, в котором они здесь перечислены):

  1. Необязательный описатель заполнения, который определяет, какой символ будет использоваться для дополнения результата до необходимой длины. Это может быть пробел или 0. По умолчанию используется пробел. Альтернативный символ может быть указан с помощью '. См. примеры ниже.
  2. Необязательный описатель выравнивания, определяющий выранивание влево или вправо. По умолчанию выравнивается вправо, - используется для выравнивания влево.
  3. Необязательное число, описатель ширины, определяющий минимальное число символов, которое будет содержать результат этого преобразования.
  4. Необязательный описатель точности, определяющий, сколько десятичных разрядов отображать для чисел с плавающей точкой. Имеет смысл только для числовых данных типа float. (Для форматирования чисел удобно также использовать функцию number_format().)
  5. Описатель типа, определяющий, как трактовать тип данных аргумента. Допустимые типы:
    - % - символ процента. Аргумент не используется.
    - b - аргумент трактуется как целое и выводится в виде двоичного числа.
    - c - аргумент трактуется как целое и выводится в виде символа с соответствующим кодом ASCII.
    - d - аргумент трактуется как целое и выводится в виде десятичного числа со знаком.
    - e - аргумент трактуется как float и выводится в научной нотации (например 1.2e+2).
    - u - аргумент трактуется как целое и выводится в виде десятичного числа без знака.
    - f - аргумент трактуется как float и выводится в виде десятичного числа с плавающей точкой.
    - o - аргумент трактуется как целое и выводится в виде восьмеричного числа.
    - s - аргумент трактуется как строка.
    - x - аргумент трактуется как целое и выводится в виде шестнадцатиричного числа (в нижнем регистре букв).
    - X - аргумент трактуется как целое и выводится в виде шестнадцатиричного числа (в верхнем регистре букв).

Начиная с PHP4.0.6 в строке формата поддерживается нумерация и изменение порядка параметров. Например:

Пример 1. Изменение порядка параметров

<?

$format = "There are %d monkeys in the %s";

printf($format, $num, $location);

?>

Этот код выведет "There are 5 monkeys in the tree". Теперь представьте, что строка формата содержится в отдельном файле, который потом будет переведен на другой язык, и мы переписываем ее в таком виде:

Пример 2. Изменение порядка параметров

<?

$format = "The %s contains %d monkeys";

printf($format, $num, $location);

?>

Появляется проблема: порядок описателей преобразования не соответствует порядку аргументов. Мы не хотим менять код, и нам нужно указать, какому аргументу соответствует тот или иной описатель преобразования.

Пример 3. Изменение порядка параметров

<?

$format = "The %2\$s contains %1\$d monkeys";

printf($format, $num, $location);

?>

Нумерация аргументов имеет еще одно применение: она позволят вывести 1 и тот же аргумент несколько раз без передачи функции дополнительных параметров.

Пример 4. Изменение порядка параметров

<?

$format = "The %2\$s contains %1\$d monkeys.

That's a nice %2\$s full of %1\$d monkeys.";

printf($format, $num, $location);

?>

См. также описание функций printf(), sscanf(), fscanf(), vsprintf() и number_format().

Примеры

Пример 5. sprintf(): заполнение нулями

<?

$isodate = sprintf("%04d-%02d-%02d", $year, $month, $day);

?>

Пример 6. sprintf(): форматирование денежных величин

<?

$money1 = 68.75;

$money2 = 54.35;

$money = $money1 + $money2;

//echo $money выведет "123.1";

$formatted = sprintf("%01.2f", $money);

//echo $formatted выведет "123.10"

?>

Пример 7. sprintf(): научная нотация

<?

$number = 362525200;

echo sprintf("%.3e", $number);//выведет 3.63e+8

?>

Пред.

Начало

След.

soundex

Уровень выше

sscanf

Отвечу на любые вопросы. С уважением, Дмитрий Владимирович.

Ваше письмо×
Free Web Hosting