vsprintf oder sprintf mit benannte Argumente, oder einfache template-parsing in PHP
Ich bin auf der Suche nach einem Weg, um benannte Argumente für sprintf
oder printf
.
Beispiel:
sprintf(
'Last time logged in was %hours hours,
%minutes minutes, %seconds seconds ago'
,$hours,$minutes, $seconds
);
oder über vsprintf
und ein assoziatives array.
Ich habe einige coding-Beispiele hier
function sprintfn ($format, array $args = array())
http://php.net/manual/de/function.sprintf.php
und hier
function vnsprintf( $format, array $data)
http://php.net/manual/de/function.vsprintf.php
wo Leute geschrieben haben, Ihre eigenen Lösungen zu finden.
Aber meine Frage ist, ist es vielleicht ein standard-PHP-Lösung gibt, um dies zu erreichen oder gibt es eine andere Möglichkeit, vielleicht mit einem einfachen PHP-Template zur Verfügung gestellt von BIRNE, dass ich dies auch erreichen, indem Sie sich an die standard-PHP?
Vielen Dank für jede Hilfe.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Soweit ich weiß printf/sprintf nicht akzeptieren assoc-arrays.
Jedoch ist es möglich zu tun
printf('%1$d %1$d', 1);
Besser als nichts 😉
Ich geschrieben habe, eine kleine Komponente, die genau für diesen Bedarf. Es heißt StringTemplate.
Mit ihm können Sie bekommen, was Sie wollen mit einem code wie diesem:
Hoffe die können helfen.
Dies ist aus php.net
Beispiel:
Beispiel 2:
Ich weiß, dieser Fehler wurde behoben, der zu lange jetzt, aber vielleicht meine Lösung ist einfach genug, aber nützlich für jemand anderes.
Mit dieser kleinen Funktion können Sie imitieren ein einfaches templating-system:
Verwenden Sie es wie diese:
Diese ausgeben würde:
Vielleicht nicht für jedermann und jeden Fall, aber es hat mich gerettet.
str_replace
-ing für alle - Taste, die immer starten Sie das scanning vom Anfang der Zeichenfolge jedes mal, das ist eine Menge verschwendeter Zeit. Eine bessere Variante wäre der Aufbau einer völlig neuen string, basierend auf dem input, der Iteration über die Quell-Zeichenfolge nur einmal.Finden Sie unter drupal Umsetzung
https://api.drupal.org/api/drupal/includes%21bootstrap.inc/function/format_string/7
Es ist einfach und erfordert nicht die Verwendung von regexp
Beispiel:
Dies ist, was ich verwende:
$templ = array_reduce($arr, <fn>, $templ)
Dies ist wirklich der beste Weg zu gehen, imho. Keine kryptischen Zeichen, verwenden Sie einfach die wichtigsten Namen!
Als ergriffen von der php-Website:
http://www.php.net/manual/en/function.vsprintf.php
/e
PCRE-modifier ist jetzt veraltet und eine schlechte Idee in den ersten Platz.Seit 5.3 wegen der
use
Stichwort:Diese Funktion unterstützt die Formatierung {{var}} oder {{dict.key}}, Sie können ändern Sie die
{{}}
zu{}
etc zum Spiel, die Sie bevorzugen.Beispiel:
Ausgabe:
Dies ist Jim, ich bin 20 Jahre alt, habe eine Katze namens huang.
Einfach genug
Werden Sie wollen, um zu vermeiden, mit % in Sie benutzerdefinierte Funktionen stören können andere Implementierungen, z.B. Datum formatieren, SQL und so...
$string1: Mary hatte ein kleines Lamm. Seine Vlies war weiß wie Schnee.
$string2: Mary hatte ein kleines Lamm. Seine Vlies war weiß wie Schnee.