Der {(...)}
-"Formatierungsausdruck" erlaubt es, eine Reihe von String- und Formatierungsanweisungen innnerhalb eines Markups auszuführen. Die Anweisungen, die laut diesem Rezept definiert werden, schließen substr, ftime, strlen, rand, mod, toupper / tolower, ucfirst, ucwords, pagename und asspaced ein. Markups können verschachtelt werden, indem man das Markup {(...(...)...)} benutzt.
substr
Der substr-Ausdruck schneidet Teile aus einem String heraus. Die Argumente werden durch Leerzeichen getrennt. Es sind
- der zu bearbeitende String – setzen Sie den String immer in Anführungszeichen,
- die Startposition des Teilstrings im String – beachten Sie, dass diese Startposition auf null basiert (d. h. das erste Zeichen im String hat die Nummer "0"),
- die Zahl der herauszuziehenden Zeichen.
Beispiele:
{(substr "PmWiki" 2 3)} {(substr "PmWiki" 2)} {(substr "PmWiki" 0 1)} {(substr "PmWiki" 0 -3)} {(substr "PmWiki" -3)} {$:title} {(substr "{$:title}" 7 11)} | Wik Wiki P PmW iki Formatierungsanweisungen im Ausdruck erungsanwei |
Um die letzten n Zeichen aus einem String herauszuschneiden, verwenden Sie {(substr "string" -n)}
Um die letzten n Zeichen vom String abzuschneiden, verwenden Sie {(substr "string" 0 -n)}
Um alle Zeichen ab dem n. Zeichen zu erhalten, lassen Sie den dritten Parameter weg: {(substr "string" n)}
ftime
ftime-Ausdrücke dienen der Formatierung von Datum und Zeit. Das allgemeine Format ist
{(ftime "fmt" "when")}
{(ftime fmt="fmt" when="when" tz="tz" locale="locale")}
worin "fmt" ein Formatstring und "when" die zu formatierende Zeit ist. Die Argumente können in beiden Reihenfolgen geschrieben werden und können die optionalen Labels "fmt=" und "when=" nutzen.
Das "tz"-Argument (time zone, Zeitzone) erlaubt das Setzen einer anderen Zeitzone, wenn auch nur in Installationen, die PHP 5.1 oder neuer nutzen. Siehe die Liste der unterstützten Zeitzonen, Argumente, die dort nicht zu finden sind, werden stillschweigend ignoriert.
Das "locale"-Argument (language locale, lokale Sprache) erlaubt, das Zeitformat mit Wochentagen und Monaten in einer anderen Sprache auszugeben, sofern diese lokale Sprache auf dem Server verfügbar ist. Sie können mehrere "locale" zum Durchprobieren angeben, getrennt durch Kommata oder Leerzeichen, z. B. "fr_FR.utf8,fr_FR,fr". Wenn keine der gelisteten "locale" verfügbar ist, wird das Argument stillschweigend ignoriert.
Wenn Sie bei internationalen "locale"-Einstellungen seltsame Zeichen sehen, versuchen Sie den ".uft8"- oder "UTF-8"-Teil hinzuzufügen oder wegzulassen, d. h. versuchen sie Beides – "fr_FR.utf8" und "fr_FR" – um zu sehen, welches bei Ihnen funktioniert. Wikis mit aktiviertem UTF-8 werden eher den ".utf8"-Teil brauchen.
Beispiele:
{(ftime)} {(ftime fmt="%F %H:%M")} {(ftime %Y)} {(ftime fmt=%T)} {(ftime when=tomorrow)} {(ftime fmt="%Y-%m-%d" yesterday)} {(ftime "+1 week" %F)} {(ftime fmt=%D "-4 month")} {(ftime fmt="%a%e %b" "next week")} {$LastModifiedTime} {(ftime "%F" "@{$LastModifiedTime}")} {(ftime fmt="%A, %d %B %Y, %Hh%M" locale=fr_FR.utf8 tz=Europe/Paris)} {(ftime fmt="%A, %d. %B %Y, %H Uhr %M" locale=de_DE.utf8 tz=Europe/Berlin)} {(ftime locale=de_DE.utf8 tz=Europe/Berlin)} | 21.11.2024 12:31 Uhr 2024-11-21 12:31 2024 12:31:37 22.11.2024 00:00 Uhr 2024-11-20 2024-11-28 07/21/24 Mo25 Nov 1544863072 2018-12-15 jeudi, 21 novembre 2024, 13h31 Donnerstag, 21. November 2024, 13 Uhr 31 21.11.2024 13:31 Uhr |
Der "fmt"-Parameter ist das, was auf fmt= folgt, oder ein String, dessen erstes Zeichen ein '%' ist oder der Standard der Site (z. B. festgelegt in config.php). Die Formatkodes sind beschrieben in http://php.net/strftime. In Ergänzung dazu ergibt '%F' ein ISO-8601-Datum und '%s' einen UNIX-Zeitstempel (Sekunden seit 1.1.1970). Einige gebräuchliche Formatstrings sind:
%F # ISO-8601-Datum "2024-11-21" %s # Unix-Zeitstempel "1732192297" %H:%M:%S # Zeit als hh:mm:ss "12:31:37" %m/%d/%Y # Datum als mm/dd/yyyy "11/21/2024" "%A, %B %d, %Y" # in Worten "Donnerstag, November 21, 2024" "%A, %d. %B %Y" # in Worten (alternativ) "Donnerstag, 21. November 2024"
Der "when"-Parameter versteht viele verschiedene Datumsformate. Der "when"-Parameter ist das, was auf when= folgt oder was nach dem Erkennen des Formatparameters übrigbleibt. Einige Beispiele:
2007-04-11 # ISO-8601-Datum 20070411 # Datum ohne Bindestriche, Schrägstriche oder Punkte 2007-03 # Monat @1176304315 # Unix-Zeitstempel (Sekunden seit 1-Jan-1970 00:00 UTC) now # Die aktuelle Zeit today # heute um 00:00:00 Uhr yesterday # gestern um 00:00:00 Uhr "next Monday" # relatives Datum "last Thursday" # relatives Datum "-3 days" # vor drei Tagen "+2 weeks" # in zwei Wochen, in der Zukunft
Anmerkung: Wenn Sie einen Unix-Zeitstempel umwandeln wollen, müssen Sie ein '@' voranstellen, also
{(ftime "%A, %B %d, %Y" @1231116927)}
,
auch wenn die Zeit aus einer Variablen stammt, wie hier:
{(ftime "%F" "@{$LastModifiedTime}")}
.
Der "when"-Parameter nutzt PHPs strtotime-Funktion, um Datumstrings gemäß des GNU- Datum-Eingabe-Formats umzuwandeln; diese Funktion versteht nur englische Phrasen in Datumsangaben.
Die Variable $FTimeFmt kann eingesetzt werden, um das Standarddatumformat, das von "ftime" benutzt wird, zu überschreiben. Der Standard für $FTimeFmt ist $TimeFmt.
Ein ungültiger "when"-Parameter evaluiert zu @000000, also 01.01.1970 00:00Uhr.
strlen
Der strlen-Ausdruck gibt die Länge des Strings zurück. Das Argument ist der nachzumessende String. Das Argument muss in Anführungszeichen gesetzt sein, auch wenn es kein literaler String ist.
{$:title} {(strlen "{$:title}")} | Formatierungsanweisungen im Ausdruck 36 |
rand
Der rand-Ausdruck liefert eine Zufallszahl aus dem Bereich der ganzen Zahlen. Das erste Argument bezeichnet die kleinste Zahl, die zurückgegeben werden soll, das zweite Argument bezeichnet die größte Zahl, die zurückgegeben werden soll. Ohne Argumente erhält man eine Zahl zwischen 0 und RAND_MAX (Es heißt, die sei 2147483647, die Hälfte der größten Integerzahl. Es ist aber vom Betriebssystem abhängig, wie groß diese Zahl letztendlich ist).
Wenn man z. B. eine Zufallszahl zwischen -5 und 15 (einschließlich) erhalten möchte, schreibt man (rand -5 15)
{(rand)} {(rand -5 0)} | 536419949 0 |
mod
Der fortschrittliche "mod"-Ausdruck gibt den Modulo (Divisionsrest) einer Division zweier Zahlen zurück. Es kann in fortschrittlichen Seitenlistenvorlagen zusammen mit {$$PageCount}
genutzt werden, um Markups in jedem (modulo) Eintrag einzufügen, z. B. um alternierende (Zebra-)Tabellenzeilen zu erzeugen oder um einen Zeilenumbruch einzufügen. (Siehe auch PageLists, WikiStyles and ConditionalMarkup.)
>>comment<< %define=bg1 item bgcolor=#f88% %define=bg2 item bgcolor=#ff8% %define=bg0 item bgcolor=#8f8%[= [[#altrows]] * %bg{(mod {$$PageCount} 3)}% {=$Name} ({$$PageCount}) [[#altrowsend]]=] >><< (:pagelist fmt=#altrows group=PmWiki count=10:) |
|
toupper / tolower
Der toupper- und der tolower-Ausdruck wandeln einen String in Groß- bzw. Kleinbuchstaben um. Das Argument ist der umzuwandelnde String.
{(toupper "{$:title}")} {(tolower "{$:title}")} | FORMATIERUNGSANWEISUNGEN IM AUSDRUCK formatierungsanweisungen im ausdruck |
ucfirst
Der ucfirst-Ausdruck wandelt das erste Zeichen des Strings in einen Großbuchstaben um, wenn es ein Buchstabe ist. Das Argument ist der umzuwandelnde String.
{(ucfirst "hund, katze, maus")} {(ucfirst "123hundert")} | Hund, katze, maus 123hundert |
ucwords
Der ucwords-Ausdruck wandelt den ersten Buchstaben jeden Wortes in dem String in einen Großbuchstaben um (eigentlich des erste Zeichen und jedes Zeichen nach einem Leerzeichen, wenn es denn ein Buchstabe ist). Das Argument ist der umzuwandelnde String.
{(ucwords "hunde und katzen")} {(ucwords "hund, katze, maus")} | Hunde Und Katzen Hund, Katze, Maus |
pagename
Der pagename-Ausdruck bildet einen Seitennamen aus einem String. Der Seitenname eignet sich als Name zum Speichern, ist in WikiWordSchreibweise geschrieben und enthält keine für Dateisysteme verbotenen Zeichen und keine Leerzeichen mehr. Das Argument ist der umzuwandelnde String.
{(pagename "ein \ Back-slash, ein Forward-slash /")} {(pagename "{$:title}")} | EinBack-slashEinForward-slash.EinBack-slashEinForward-slash PmWikiDe.FormatierungsanweisungenImAusdruck |
asspaced
Der asspaced-Ausdruck zerlegt WikiWörter, indem es Leerzeichen vor Großbuchstaben einfügt. Das Argument ist der umzuwandelnde String.
{$FullName} {(asspaced "{$FullName}")} | PmWikiDe.MarkupExpressions Pm Wiki De.Markup Expressions |
Verschachteln von Ausdrücken
Die hier beschriebenen Ausdrücke können verschachtelt werden.
{(tolower (substr "Hello World" 2))} | llo world |
Der innere Ausdruck darf nicht mehr von geschweiften Klammern umgeben sein. Das Setzen von Anführungszeichen ist eine diffizile Angelegenheit.
Anmerkungen
- In PmWikis der Version 2.2.33 oder älter funktionieren womöglich einige der stringbearbeitenden Ausdrücke nicht sauber mit Multibyte-UTF-8-Zeichen. Neuere Versionen sollten gut funktionieren.
- Der "ftime"-Ausdruck funktioniert nicht mit einigen ISO 8601-Daten (weil die Zeit 24:00 ungültig ist)
{(ftime fmt="%m/%d/%Y @ %H:%M:%S" when="20070626T2400")} {(ftime fmt="%H:%M:%S" when="20070626T2400")} | 06/27/2007 @ 00:00:00 00:00:00 |
- Es ist möglich, die Zeit in einer anderen Zeitzone anzuzeigen.
1 {(ftime when='Europe/Berlin')} 2 {(ftime when='Europe/London')} 3 {(ftime when='Europe/London +2 days')} 4 {(ftime when="Europe/London 20041031T0820")} 5 {(ftime "%F %H:%M" 'Pacific/Auckland now')} | 1 21.11.2024 11:31 Uhr 2 21.11.2024 12:31 Uhr 3 23.11.2024 12:31 Uhr 4 31.10.2004 08:20 Uhr 5 2024-11-20 23:31 |
Siehe auch
- Seitenspezifische Variablen, Seiten-Text-Variablen
- Bedingte Auszeichnung
- Cookbook:MarkupExpressionSamples – custom markup expression samples
- Cookbook:MarkupExprPlus
Übersetzung von PmWiki.MarkupExpressions, Originalseite auf PmWikiDe.MarkupExpressions — Rückverweise
Zuletzt geändert: | PmWikiDe.MarkupExpressions | am 15.12.2018 |
PmWiki.MarkupExpressions | am 15.12.2018 |