Подтвердить что ты не робот

Что означает% S в PHP, HTML или XML?

Я смотрю Webmonkey PHP и MySql Tutorial, уроки 2. Я думаю, что это литерал php. Что означает %s? Он находится внутри функции print_f() в циклах while, по меньшей мере, в первой паре блоков кода.

printf("<tr><td>%s %s</td><td>%s</td></tr>n", ...

4b9b3361

Ответ 1

с символами printf или sprintf, которым предшествует знак%, являются заполнителями (или жетонами). Они будут заменены переменной, переданной как аргумент.

Пример:

$str1 = 'best';
$str2 = 'world';

$say = sprintf('Tivie is the %s in the %s!', $str1, $str2);
echo $say;

Это выведет:

Тиви - лучший в мире!

Примечание. Есть больше заполнителей (% s для строки,% d для номера деления и т.д.)


Order:

Порядок, в котором вы передаете аргументы, подсчитывается. Если вы переключите $str1 на $str2 как

$say = sprintf('Tivie is the %s in the %s!', $str2, $str1); 

он напечатает

"Тиви - мир в лучшем!"

Однако вы можете изменить порядок чтения таких аргументов:

$say = sprintf('Tivie is the %2$s in the %1$s!', $str2, $str1);

который правильно напечатает предложение.


Кроме того, имейте в виду, что PHP является динамическим языком и не требует (или поддерживает) явного определения типа. Это означает, что при необходимости жонглирует переменными типами. В спринте это означает, что если вы передадите "string" в качестве аргумента для числового заполнителя (% d), эта строка будет преобразована в число (int, float...), которое может иметь странные результаты. Вот пример:

$onevar = 2;
$anothervar = 'pocket';
$say = sprintf('I have %d chocolate(s) in my %d.', $onevar, $anothervar);
echo $say;

это напечатает

У меня есть 2 шоколада (ов) в моем 0.

Подробнее читайте на PHPdocs

Ответ 2

В printf, %s является заполнителем для данных, которые будут вставлены в строку. Дополнительные аргументы printf - это значения, которые нужно вставить. Они привязаны к заполнителям позиционно: первый placeholder получает первое значение, второе - второе значение и т.д.

Ответ 3

%s - спецификатор типа, который будет заменен на ценное значение (строка) в случае %s.

Кроме %s вы можете использовать другие спецификаторы, наиболее популярные из которых ниже:

d - аргумент рассматривается как целое число и представляется как (подписанное) десятичное число.

f - аргумент рассматривается как float и представлен как число с плавающей запятой (locale известно).

s - аргумент рассматривается как и представлен как строка.

Ответ 4

$num = 5; 
$location = 'tree';

$format = 'There are %d monkeys in the %s'; 
echo sprintf($format, $num, $location); 

Будет выводиться: "В дереве есть 5 обезьян".