vsprintf ou sprintf avec des arguments nommés, ou simple modèle d'analyse en PHP
Je suis à la recherche d'un moyen d'utiliser arguments nommés pour sprintf
ou printf
.
Exemple:
sprintf(
'Last time logged in was %hours hours,
%minutes minutes, %seconds seconds ago'
,$hours,$minutes, $seconds
);
ou via vsprintf
et un tableau associatif.
J'ai trouvé quelques exemples de code ici
function sprintfn ($format, array $args = array())
http://php.net/manual/de/function.sprintf.php
et ici
function vnsprintf( $format, array $data)
http://php.net/manual/de/function.vsprintf.php
où les gens ont écrit leurs propres solutions.
Mais ma question est, est-il peut-être un standard de PHP solution pour atteindre ce ou est-il une autre voie, peut-être avec un simple PHP template fourni par la POIRE, que je peut atteindre cet objectif en respectant la norme PHP?
Merci pour toute aide.
voir aussi: stackoverflow.com/questions/13325698/php-sprintf-with-array
voir aussi: stackoverflow.com/a/18236037/42223
voir aussi: stackoverflow.com/a/18236037/42223
OriginalL'auteur Jeremy S. | 2011-04-18
Vous devez vous connecter pour publier un commentaire.
Autant que je sache printf/sprintf n'accepte pas assoc tableaux.
Toutefois, il est possible de faire
printf('%1$d %1$d', 1);
Mieux que rien 😉
str_replace/preg_replace/strtr - mais je doute que c'est ce que vous cherchez. Vous pouvez également tirer parti de syntaxe HEREDOC (php.net/heredoc)
Je suis allé avec les solutions de la forme php.net, neverthelesss merci de répondre
Pas de problème, la solution? (juste par curiosité)
vous pouvez le voir dans les commentaires de l'php.net fonction documentation php.net/manual/de/function.vsprintf.php
OriginalL'auteur Kamil Tomšík
J'ai écrit un petit composant exactement à ce besoin. Il est appelé StringTemplate.
Avec elle, vous pouvez obtenir ce que vous voulez avec un code comme ceci:
L'espoir peut vous aider.
OriginalL'auteur Nicolò Martini
C'est à partir de php.net
Exemple:
Exemple 2:
OriginalL'auteur RoboTamer
Je sais que cela a été résolu depuis trop longtemps maintenant, mais peut-être que ma solution est assez simple, mais utile pour quelqu'un d'autre.
Avec cette petite fonction vous permet de simuler un simple système de template:
L'utiliser comme ceci:
Ce serait sortie:
Peut-être pas pour tout le monde et tous les cas, mais il m'a sauvé.
La boucle nécessite
str_replace
-ing pour tous, qui vous permettra de toujours commencer la numérisation à partir du début de la chaîne à chaque fois, ce qui est beaucoup de temps perdu. Une meilleure variation serait de construire une nouvelle chaîne de caractères en fonction de l'entrée, une itération sur la chaîne source qu'une seule fois.OriginalL'auteur Armin Cifuentes
Voir drupal mise en œuvre du
https://api.drupal.org/api/drupal/includes%21bootstrap.inc/function/format_string/7
C'est simple et ne pas utiliser les regexp
Exemple:
OriginalL'auteur ymakux
C'est vraiment la meilleure façon d'aller à mon humble avis. Pas de cryptic caractères, il suffit d'utiliser les noms de clé!
À partir de php site:
http://www.php.net/manual/en/function.vsprintf.php
/e
PCRE modificateur est maintenant deprecated et une mauvaise idée en premier lieu.OriginalL'auteur roberthuttinger
C'est ce que j'utilise:
OriginalL'auteur zhangv
Depuis 5.3 en raison de la
use
mot-clé:Cette fonction prend en charge la mise en forme {{var}} ou {{dict.clé}}, vous pouvez modifier la
{{}}
à{}
etc pour vous correspondre faveur.Exemple:
De sortie:
C'est Jim, j'ai 20 ans, j'ai un chat nommé huang.
OriginalL'auteur nowheretoseek
Assez Simple
OriginalL'auteur 兜甲児