web-dev-qa-db-fra.com

Que signifie% S en PHP, HTML ou XML?

Je regarde Webmonkey PHP et MySql Tutorial, Lesson 2 . Je pense que c'est un littéral php. Que signifie %s? C'est à l'intérieur du print_f() fonction dans les boucles while dans au moins les deux premiers blocs de code.

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

32
Wolfpack'08

avec les caractères printf ou sprintf précédés du signe% sont des espaces réservés (ou jetons). Ils seront remplacés par une variable passée en argument.

Exemple:

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

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

Cela produira:

Tivie est la meilleure au monde!

Remarque: il y a plus d'espaces réservés (% s pour la chaîne,% d pour le numéro de déc, etc ...)


Commande:

L'ordre dans lequel vous passez les arguments compte. Si vous changez $ str1 avec $ str2 as

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

il imprimera

"Tivie est le monde dans le meilleur!"

Vous pouvez cependant modifier l'ordre de lecture des arguments comme celui-ci:

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

qui imprimera la phrase correctement.


En outre, gardez à l'esprit que PHP est un langage dynamique et ne nécessite pas (ou ne prend pas en charge) une définition de type explicite. Cela signifie qu'il jongle avec les types de variables selon les besoins. En sprint, cela signifie que si vous passez un "chaîne" comme argument pour un espace réservé de nombre (% d), cette chaîne sera convertie en un nombre (int, float ...) qui peut avoir des résultats étranges. Voici un exemple:

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

cela imprimera

J'ai 2 chocolat (s) dans mon 0.

Plus de lecture sur PHPdocs

44
Tivie

Dans printf, %s est un espace réservé pour les données qui seront insérées dans la chaîne. Les arguments supplémentaires à printf sont les valeurs à insérer. Ils sont associés aux espaces réservés de manière positionnelle: le premier espace réservé obtient la première valeur, le second la deuxième valeur, etc.

11
Ned Batchelder

%s est un spécificateur de type qui sera remplacé par la valeur de valeur (chaîne) en cas de %s.

Outre %s vous pouvez utiliser d'autres spécificateurs , les plus populaires sont ci-dessous:

d - l'argument est traité comme un entier et présenté comme un nombre décimal (signé).

f - l'argument est traité comme un flottant et présenté comme un nombre à virgule flottante (sensible aux paramètres régionaux).

s - l'argument est traité comme et présenté comme une chaîne.

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

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

Sortira: "Il y a 5 singes dans l'arbre."

1
David

La fonction printf() ou sprintf() écrit une chaîne formatée dans une variable. Voici la syntaxe:

sprintf(format,arg1,arg2,arg++)

format:

  • %% - Renvoie un signe de pourcentage
  • % b - nombre binaire
  • % c - Le caractère selon la valeur ASCII
  • % d - Nombre décimal signé (négatif, zéro ou positif)
  • % e - Notation scientifique utilisant un minuscule (par exemple 1.2e + 2)
  • % E - notation scientifique utilisant une majuscule (par exemple 1.2E + 2)
  • % u - Nombre décimal non signé (égal ou supérieur à zéro)
  • % f - nombre à virgule flottante (prise en compte des paramètres locaux)
  • % F - nombre à virgule flottante (pas de paramètres locaux au courant)
  • % g - plus court de% e et% f
  • % G - plus court de% E et% f
  • % o - nombre octal
  • % s - Chaîne
  • % x - Nombre hexadécimal (lettres minuscules)
  • % X - Nombre hexadécimal (lettres majuscules)

arg1 :

  • L'argument à insérer au premier % - signe dans la chaîne de format .. (Obligatoire.)

arg2 :

  • L'argument à insérer au deuxième % - signe dans la chaîne de format. (Optionnel)

arg ++ :

  • L'argument à insérer au troisième, quatrième, etc. % - signe dans la chaîne de format (Facultatif)

Exemple 1:

$number = 9;
$str = "New York";
$txt = sprintf("There are approximately %u million people in %s.",$number,$str);
echo $txt;

Cela produira:

9 Compte environ New York Millions de personnes.

Le arg1 , arg2 , Les paramètres arg ++ seront insérés au niveau des signes de pourcentage (%) dans la chaîne principale. Cette fonction fonctionne "pas à pas". Au premier signe%, arg1 est inséré, au deuxième signe%, arg2 est inséré, etc.

Remarque : S'il y a plus de signes% que d'arguments, vous devez utiliser des espaces réservés. Un espace réservé est inséré après le signe% et se compose du numéro d'argument et de "\ $". Voyons un autre exemple:

Exemple 2

$number = 123;
$txt = sprintf("With 2 decimals: %1\$.2f
<br>With no decimals: %1\$u",$number);
echo $txt;

Cela produira:

Avec 2 décimales: 123.00
Sans décimales: 123

Un autre conseil important à retenir est que:

Avec les fonctions printf() et sprintf(), le caractère d'échappement n'est pas une barre oblique inverse '\' mais plutôt '%'. C'est à dire. pour imprimer le caractère '%', vous devez l'échapper avec lui-même:

printf('%%%s%%', 'Nigeria Naira');

Cela produira:

% Nigéria Naira%

N'hésitez pas à explorer l'officiel Documentation PHP

0
Emeka Augustine