Printf php примеры. PHP sprintf: форматирование и обработка строк

printf ("как форматировать", парметр1, параметр2, ...) -- выводит результат на экран

$result=sprintf ("..", .., .., ...) - тоже самое, только строка не выводиться, а помещается в $result

Цитата из перевода мануала (ПРИМЕРЫ ниже:-):

sprintf

sprintf -- возвращает форматированную строку
Описание
sprintf (string format, mixed ...);

Возвращает строку, обрабатываемую в соответствии с форматирующей строкой format .

Форматирующая строка, содержащая ноль или более директив: обычные символы (кроме %) которые копируются прямо в результат, и that are copied directly to the result, и описания изменений , каждое из которых выполняет определенные действия. Это применительно и к sprintf() и к printf()

Каждое описание изменений состоит из следующих элементов, в порядке:

    Дополнительный описатель заполнения , который говорит, какие символы будут использоваться для заполнения результата до правильног размера строки. Это могут быть пробелы или 0 (символ нуля). По умолчанию заполняется пробелами. Алтернативный символ заполнения может быть определен одинарной кавычкой ("). См. примеры ниже.

    Дополнительный описатель выравнивания , который говорит, что результат должен быть выравнен по левому или по правому краю. По умолчанию выравнивание происходит по правому краю; символ - приведет к вырвниванию по левому краю.

    Дополнительный описатель ширины , который говорит, с каким количеством символов (минимум) пожет производится данная замена.

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

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

    % - символ процента. Аргумент не требуется.
    b - аргумент трактуется как integer и представляется как двоичное число.
    c - аргумент трактуется как integer и представляется как символ с ASCII значением.
    d - аргумент трактуется как integer и представляется как десятичное число.
    f - аргумент трактуется как double и представляется как число с плавающей точкой.
    o - аргумент трактуется как integer и представляется как восьмиричное число.
    s - аргумент трактуется и представляется как строка.
    x - аргумент трактуется как integer и представляется как шестнадцатиричное число (с буквами в нижнем регистре).
    X - аргумент трактуется как integer и представляется как шестнадцатиричное число (с буквами в верхнем регистре).
Примеры

Пример 2. sprintf: форматирование денежной еденицы

$money1 = 68.75; $money2 = 54.35; $money = $money1 + $money2; // echo $money will output "123.1"; $formatted = sprintf ("%01.2f", $money); // echo $formatted will output "123.10"

Примеры

Все то, что записано >>> между таких скобок <<< является результатом работы фукнции (т.е. пример вывода на экран) $s="MyString"; -> строка %s $f=12345.6789; -> дробное %f $d=12345; -> целое %d 10-я система: 0123456789 16числа %x 16-я система: 0123456789abcdef 16числа %X 16-я система: 0123456789ABCDEF 8числа %o 8-я система: 01234567 2числа %b 2-я система: 01 просто выводим число: printf("%d",$d); >>> 12345 <<< просто выводим 16число: printf("%X",123456789); >>> 75BCD15 <<< просто выводим 2число: printf("%b",$d); >>> 11000000111001 <<< просто выводим дробное число: printf("%f",$f); >>> 12345.6789 <<< дополнение чисел нулями: printf("%010d",$d); >>> 0000012345 <<< округление до 3х знаков после запятой: printf("%.3f",$f); >>> 12345.679 <<< просто выводим число + посторонний текст: printf("посторонний%dтекст",$d); >>> посторонний12345текст <<< вывод нескольких переменных - последовательное перечисление printf("%d-%f-%s",$d,$f,$s); >>> 12345-12345.678900-MyString <<< выравнивание (ширина 20 символов) по правому краю, пустоту заполняем "_": printf("%"_20s",MyString); >>> ____________MyString <<< выравнивание по левому краю, пустоту заполняем "x": printf("%-"x20s",MyString); >>> MyStringxxxxxxxxxxxx <<<

Другие примеры смотрим тут:

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

Сразу скажу, что разница между printf() и sprintf() лишь в том, что первая выводит строку сразу в выходной поток (например, в браузер), а вторая возвращает её.

Параметр функции - это строка, которая имеет символы с %, называемые спецификаторами , и символы без %, называемых директивами . Директивы остаются неизменными при форматировании, а вот спецификатор приводит к подстановке других параметров функций (следующих за строкой с форматом).

Всего имеется несколько спецификаторов, которые объединяются в одну группу (один общий % ), порядок которых следующий:

  1. Спецификатор заполнения . Позволяет заполнить строку до заданного размера конкретным символом. По умолчанию этим символом является пробел.
  2. Спецификатор выравнивания . Данный спецификатор позволяет задать выравнивание строки по правому краю (по умолчанию), либо по левому краю (если указать "- ").
  3. Спецификатор минимальной ширины . Если результат будет иметь меньшую длину строки, то она будет заполнена символами из спецификатора заполнения до указанной ширины.
  4. Спецификатор точности . Позволяет указать, какое количество знаков после запятой оставить у числа с плавающей точкой.
  5. Спецификатор типа . Этот спецификатор указывает тип выводимых данных. Их там 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() позволяют легко решать, на первый взгляд, достаточно сложные задачи. Поэтому Вам обязательно нужно иметь их в своём арсенале.

(PHP 4, PHP 5, PHP 7)

sprintf — Возвращает отформатированную строку

Список параметров

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

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

  1. Необязательный описатель знака , указывающий как знак (- или +) будет применен к числу. По умолчанию, используется только знак минус, если число отрицательное. Этот описатель заставляет положительные числа также отображать знак плюс, он был добавлен в PHP 4.3.0.
  2. Необязательный описатель заполнения , который определяет, какой символ будет использоваться для дополнения результата до необходимой длины. Это может быть пробел или 0 . По умолчанию используется пробел. Альтернативный символ может быть указан с помощью одиночной кавычки (" ). См. примеры ниже.
  3. Необязательный описатель выравнивания , определяющий выравнивание влево или вправо. По умолчанию выравнивается вправо, - используется для выравнивания влево.
  4. Необязательное число, описатель ширины , определяющий минимальное число символов, которое будет содержать результат этого преобразования.
  5. Необязательный описатель точности , указанный в виде точки ("."), после которой следует необязательная строка из десятичных чисел, определяющая, сколько десятичных разрядов отображать для чисел с плавающей точкой. При использовании со строками этот описатель выступает в роли обрезающей точки, устанавливающей максимальный лимит символов. Также между точкой и цифрой можно указать символ, используемый при дополнении числа.
  6. Описатель типа , определяющий, как трактовать тип данных аргумента. Допустимые типы:

    • % - символ процента. Аргумент не используется.
    • b - аргумент трактуется как целое и выводится в виде двоичного числа.
    • c - аргумент трактуется как целое и выводится в виде символа с соответствующим кодом ASCII.
    • d - аргумент трактуется как целое и выводится в виде десятичного числа со знаком.
    • e - аргумент трактуется как число в в научной нотации (например, 1.2e+2). Описатель точности указывает на количество знаков после запятой, начиная с версии PHP 5.2.1. В более ранних версиях он обозначал количество значащих цифр (на один знак меньше).
    • E - аналогично %e , но использует заглавную букву (например, 1.2E+2).
    • f - аргумент трактуется как число с плавающей точкой и также выводится в зависимости от локали.
    • F - аргумент трактуется как число с плавающей точкой и также выводится, но без зависимости от локали. Доступно, начиная с версии PHP 4.3.10 и PHP 5.0.3.
    • g %e и %f .
    • G - выбирает самую краткую запись из %E и %f .
    • o - аргумент трактуется как целое и выводится в виде восьмеричного числа.
    • s - аргумент трактуется как строка.
    • u - аргумент трактуется как целое и выводится в виде десятичного числа без знака.
    • x - аргумент трактуется как целое и выводится в виде шестнадцатеричного числа (в нижнем регистре).
    • X - аргумент трактуется как целое и выводится в виде шестнадцатеричного числа (в верхнем регистре).

Переменные будут преобразованы в соответвующий тип для спецификатора:

Обработка типов
Тип Спецификатор
string s
integer d , u , c , o , x , X , b
double g , G , e , E , f , F

Внимание

Попытка использовать комбинацию строк и спецификаторов ширины с кодировками, которые требуют более одного байта на символ, может привести к неожиданным результатам.

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

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

$num = 5 ;
$location = "дереве" ;

$format = "%d обезьян сидят на %s" ;

?>

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

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

$format = "На %s сидят %d обезьян" ;
echo sprintf ($format , $num , $location );
?>

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

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

$format = "На %2$s сидят %1$d обезьян" ;
echo sprintf ($format , $num , $location );
?>

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

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

$format = "На %2$s сидят %1$d обезьян.
Как здорово, когда на %2$s сидят %1$d обезьян."
;
echo sprintf ($format , $num , $location );
?>

При изменении порядка параметров описатель позиции n$ должен идти сразу за знаком процента (% ) прежде всех остальных описателей, как показано в примере ниже.

Пример #5 Указание дополняющего символа

echo sprintf ("%".9d\n" , 123 );
echo sprintf ("%".09d\n" , 123 );
?>

123 000000123

Пример #6 Использование описателя позиции и совместно с другими описателями

$format = "На %2$s сидят %1$04d обезьян" ;
echo sprintf ($format , $num , $location );
?>

Результат выполнения данного примера:

На дереве сидят 0005 обезьян

Замечание :

Попытка использовать спецификатор позиции, больший чем PHP_INT_MAX , приведет к генерации предупреждения функцией sprintf() .

Внимание

The c type specifier ignores padding and width

Возвращаемые значения

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

Примеры

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

$n = 43951789 ;
$u = - 43951789 ;
$c = 65 ; // ASCII 65 is "A"

// заметьте, двойной %% выводится как одинарный "%"
printf ("%%b = "%b"\n" , $n ); // двоичное представление
printf ("%%c = "%c"\n" , $c ); // выводит символ ascii, аналогично функции chr()
printf ("%%d = "%d"\n" , $n ); // обычное целое число
printf ("%%e = "%e"\n" , $n ); // научная нотация
printf ("%%u = "%u"\n" , $n ); // беззнаковое целое представление положительного числа
printf ("%%u = "%u"\n" , $u ); // беззнаковое целое представление отрицательного числа
printf ("%%f = "%f"\n" , $n ); // представление числа с плавающей точкой
printf ("%%o = "%o"\n" , $n ); // восьмеричное представление
printf ("%%s = "%s"\n" , $n ); // строка
printf ("%%x = "%x"\n" , $n ); // шестнадцатеричное представление (нижний регистр)
printf ("%%X = "%X"\n" , $n ); // шестнадцатеричное представление (верхний регистр)

Printf ("%%+d = "%+d"\n" , $n ); // описатель знака с положительным целым числом
printf ("%%+d = "%+d"\n" , $u ); // описатель знака с отрицательным целым числом
?>

Результат выполнения данного примера:

%b = "10100111101010011010101101" %c = "A" %d = "43951789" %e = "4.39518e+7" %u = "43951789" %u = "4251015507" %f = "43951789.000000" %o = "247523255" %s = "43951789" %x = "29ea6ad" %X = "29EA6AD" %+d = "+43951789" %+d = "-43951789"

Пример #8 printf() : описатели строк

$s = "monkey" ;
$t = "many monkeys" ;

Printf ("[%s]\n" , $s ); // обычный вывод строки
printf ("[%10s]\n" , $s ); // выравнивание вправо с пробелами
printf ("[%-10s]\n" , $s ); // выравнивание влево с пробелами
printf ("[%010s]\n" , $s ); // дополнение нулями также работает со строками
printf ("[%"#10s]\n" , $s ); // использование собственного дополняющего символа "#"
printf ("[%10.10s]\n" , $t ); // выравнивание влево с обрезкой в 10 символов
?>

string sprintf (string format [, mixed args])

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

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

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

    Необязательный описатель заполнения , который определяет, какой символ будет использоваться для дополнения результата до необходимой длины. Это может быть пробел или 0 . По умолчанию используется пробел. Альтернативный символ может быть указан с помощью " . См. примеры ниже.

    Необязательный описатель выравнивания , определяющий выранивание влево или вправо. По умолчанию выравнивается вправо, - используется для выравнивания влево.

    Необязательное число, описатель ширины , определяющий минимальное число символов, которое будет содержать результат этого преобразования.

    Необязательный описатель точности , определяющий, сколько десятичных разрядов отображать для чисел с плавающей точкой. Имеет смысл только для числовых данных типа float . (Для форматирования чисел удобно также использовать функцию number_format() .)

  1. Описатель типа , определяющий, как трактовать тип данных аргумента. Допустимые типы:

    % - символ процента. Аргумент не используется.
    b - аргумент трактуется как целое и выводится в виде двоичного числа.
    c - аргумент трактуется как целое и выводится в виде символа с соответствующим кодом ASCII.
    d - аргумент трактуется как целое и выводится в виде десятичного числа со знаком.
    e - аргумент трактуется как float и выводится в научной нотации (например 1.2e+2).
    u - аргумент трактуется как целое и выводится в виде десятичного числа без знака.
    f - аргумент трактуется как float и выводится в виде десятичного числа с плавающей точкой.
    o - аргумент трактуется как целое и выводится в виде восьмеричного числа.
    s - аргумент трактуется как строка.
    x - аргумент трактуется как целое и выводится в виде шестнадцатиричного числа (в нижнем регистре букв).
    X - аргумент трактуется как целое и выводится в виде шестнадцатиричного числа (в верхнем регистре букв).

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


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

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

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

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

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

$format = "The %2\$s contains %1\$d monkeys" ;
printf ($format , $num , $location );
?>
Нумерация аргументов имеет еще одно применение: она позволят вывести один и тот же аргумент несколько раз без передачи функции дополнительных параметров.

Функция PHP sprintf позволяет преобразовать и разместить некоторое количество аргументов в одной строке символов. Спецификаторы форматирования позволяют работать с символами, строками, целыми и вещественными числами.

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

Синтаксис функции PHP sprintf()

Результат функции - строка символов, сформированная в определенной последовательности из конкретных данных, параметры функции:

  • строка форматирования;
  • список аргументов.

Для форматирования можно использовать любую конструкцию и логику, включая теги HTML. Хотя нет никаких ограничений на применение sprintf, руководство по PHP определяет спецификаторы преобразования в большей степени к числовой информации.

Элемент формата начинается с символа % и заканчивается символом спецификатора. Большая часть возможностей форматирования лежит в области числовой информации. Очень практична возможность преобразовать число в двоичный и шестнадцатеричный форматы. Здесь функции sprintf на PHP вряд ли стоит писать замену.

В приведенном примере особенно выделено правило именования аргументов и отличия спецификатора x от X. Правильное использование ссылок на последовательность аргументов, которые форматируются, имеет значение для правильного результата. Нумерация всегда начинается с 1.

Последовательность использования ссылок не имеет значения, но важно помнить: PHP функция sprintf все элементы % (без указания номера аргумента) рассматривает последовательно в общем списке. К нумерации общего списка никакого отношения не имеет ни количество, ни последовательность элементов %, указанных с конкретными номерами параметров.

Описание примера применения sprintf в PHP

Если управлять аргументом в виде строки нет прямой возможности, то управлять строкой формата и выводом в строку результата цифровой информации не представляет проблемы.

В первых двух строках примера (вывод аргументов Arg1, Arg2c и Arg2p) первый аргумент - строка (наименование позиции) выводится как есть. Третий аргумент занимает в выводе 12 (14) символов. Первая строка выравнивает число слева нулями до общей длины 12 символов. После точки четыре символа. Вторая строка выравнивает число справа (дробную часть) до 14 символов. Признаком, что нужно выполнять выравнивание справа, служит символ -.

Строка форматирования - это обычная строка символов. В нее можно вставлять вычисляемые выражения. В данном случае для выделения другого числа использованы вставки {$cL} и {$cR}. Это сделало строку форматирования нагляднее и упростило ее запись по всем примерам.

Формирование строки форматирования

Работа PHP на русском, или функция sprintf, - работа интерпретатора в естественной и удобной среде. Собственно, HTML-страница со вставками PHP-кода представляет собой любой контекст на любом языке. Это не та свобода, которую дает язык JavaScript в среде браузера.

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

Текст вставки PHP-кода в HTML-страницу понятен и востребован. Применение в строке символов:

Значение переменной ABC={$ABC} единиц

Вставка {$ABC} имеет значение только один раз и выполняется тоже только один раз.

Особенность выполнения PHP-кода на странице

Интерпретатор только один раз просматривает страницу и только один раз заменяет вставки {$ABC} их значениями. Программист может, по своему усмотрению, применять фразу "только один раз", заставляя PHP многократно приближаться к нужному результату.

В любом случае, как только HTML-страница отправлена в браузер, в ней нет никакого PHP-кода.

Если элемент страницы из браузера инициировал контакт с сервером, он может запустить новый PHP-скрипт. Здесь вставки {$ABC} весьма относительны, и нет никакой гарантии правильного результата. Но применение в PHP sprintf - это динамика такой возможности.

Разработчик может не только получить желаемое исполнение такой вставки, но и изменить строку, в которую она будет передавать нужное значение.

Момент формирования контента

Использование потенциала PHP как средства формирования вставок в HTML-страницу, как инструмента формирования страницы целиком - естественно. С этого начинается сайт. Как только страница сформирована, а фактически на сайт пришел посетитель, то по современным представлениям:

  • страницу менять нельзя;
  • пользователя упускать тоже нельзя.

Фактически посетитель пришел на сайт и получил первый ответ в виде HTML-кода. Совершенно неправильно менять этот ответ - это означает сказать посетителю, что страница его меняет. Но реагировать на действия посетителя адекватно и по его инициативе страница обязана.

Приход посетителя - первый ответ. Действие посетителя - адекватная реакция страницы и ее подготовка ко всем предполагаемым следующим действиям посетителя.

Значительная доля ответственности за динамику страницы по инициативе посетителя ложится на JavaScript, но он функционирует только в браузере, а на сервер может отправлять только AJAX-запросы. Каждое обращение к серверу может запускать PHP-скрипт. Но момент формирования страницы и момент реакции на запрос существенно различаются.

Функция PHP sprintf - идеальное средство для динамического формирования шаблона ответа и заполнения его нужным значением.

Изменение PHP-кода в ходе исполнения

Идея динамики кода родилась вместе с первым языком программирования и сегодня присутствует в каждом современном языке программирования.

Выполнение кода посредством eval (строка кода) сегодня считается брешью в безопасности, но она настолько же востребована, насколько и опасна.

Чтобы изменить код в процессе исполнения, сегодня не обязательно пользоваться функцией eval(). Это скорее быстрый завтрак, выполнение одной-двух команд, нежели практичный фундамент для построения нужной динамики.

Функция PHP sprintf() позволяет проектировать шаблон скрипта, например кода объекта, который будет вызван при том или ином действии посетителя. Сложившаяся практика записывать тела объектов в виде независимых файлов - идеальное решение для их изменения в процессе работы сайта.

Использование инструментов дополняющих функциональность sprintf() позволяет не только изменять используемые объекты в результате действий конкретного посетителя, но и переносить эту динамику на работу с другими посетителями: это развитие сайта, динамика его функциональности, накопление опыта работы и знаний.

 
Статьи по теме:
Как разблокировать телефон
Как разблокировать от оператора ваш Мегафон Login 2 1. Вставляете сим-карту другого сотового оператора в телефон. 2. Включаете Мегафон Login 2 (Megafon Login 2 MS3A) . 3. Должно появится окно для ввода кода разблокировки . 4. Вводите код: 67587048 5. Теп
Asus ZenFone Max ZC550KL — Советы, рекомендации, часто задаваемые вопросы и полезные параметры
Как вставить SIM-карту на свой Asus ZenFone Max? Asus ZenFone Max — это смартфон с двумя SIM-картами и поддерживает соединение 2G / 3G / 4G. SIM-карта, поддерживаемая устройством, является Micro SIM-картой и может быть видна после снятия задней крышки тел
Что такое расширение файла CDR?
CDR-формат — это файл, который был создан в программе Corel DRAW, содержащей растровое или векторное изображение. Компания Corel использует этот формат в собственных продуктах, поэтому его можно открыть также другим программным обеспечением данной компани
Multisim 17 где находится библиотека элементов
Компоненты и библиотеки элементов Multisim 11 Контрольно-измерительные и индикаторные приборы В Multisim имеются измерительные приборы, каждый из которых можно использовать в схеме только один раз. Эти приборы рас­положены в библиотеке контрольно-из