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

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

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

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

Пример:

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

Это приведет к выводу:

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

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


Порядок:

Порядок, в котором вы передаете аргументы, подсчитывается. Если вы переключите $ 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

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

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

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

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

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

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

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

Вывод: «В дереве есть 5 обезьян».