Extension:ParserFunctions/String functions/de

From mediawiki.org
MediaWiki-Erweiterungen
StringFunctions
Freigabestatus: stabil
Einbindung Parser-Funktion
Autor(en) Tim Starling, Robert Rohde, Ross McClure, Juraj Simlovic
Letzte Version 2.0.1 (27. August 2008)
MediaWiki 1.7+
Lizenz GNU General Public License 2.0 oder neuer
Herunterladen See extension ParserFunctions
  • $wgPFEnableStringFunctions
  • $wgPFStringLengthLimit
Quarterly downloads 401 (Ranked 10th)
Public wikis using 15,766 (Ranked 4th)

Die Erweiterung StringFunctions bietet einen zusätzlichen Satz Parser-Funktionen, welche Zeichenketten bearbeiten. Die Version 2.0 behebt Probleme mit <nowiki> und lässt die Notwendigkeit entfallen, auf dem Server die PHP-Erweiterung mbstring installiert zu haben.

Hinweis: Wikimedia-Benutzer
Diese Erweiterung ist derzeit in Wikimedia-Wikis nicht aktiviert. (Stand: 18. August 2011.)
Als Aushilfe: String-Vorlagen Siehe bugzilla:6455.
Hinweis: All diese Funktionen außer #pad, #urldecode und #urlencode wurden in die Erweiterung ParserFunctions in der Version r50997 integriert. Diese Version ist für MediaWiki 1.16 erstellt worden, auf früheren Versionen könnte ein Update auf die Stammversion funktionieren.
Hinweis: Um diese Funktionen in der Erweiterung ParserFunctions (Version r50997) zu nutzen, musst du in der LocalSettings.php "$wgPFEnableStringFunctions = true;" setzen.

Funktionen[edit]

Dieses Modul definiert die Funktionen: len, pos, rpos, sub, pad, replace, explode, urlencode und urldecode.

Alle diese Funktionen laufen mit der Zeitkomplexität , was vor DoS-Attacken schßtzt.

Hinweis Hinweis:

  1. Zur Vorbeugung von Missbrauch unterliegen einige Parameter Begrenzungen. Siehe Abschnitt Begrenzungen unten.
  2. Für Funktionen, die unerwünschterweise Groß- und Kleinschreibung unterscheiden, kann das Magic Word {{lc:Ausdruck}} verwendet werden.

#len:[edit]

Die Funktion #len gibt die Länge der eingegebenen Zeichenkette aus. Beispiel:

{{#len:Beispiel}} → 8

Hinweis Hinweis:

  • Leerzeichen am Ende werden nicht mitgezählt. Beispiel: {{#len:Schokoriegel   }} → 12
  • Zeichen werden ordnungsgemäß gezählt, auch wenn sie in UTF-8 mehrere Bytes einnehmen. Beispiel: {{#len:Ĺ˝mrĹžlina}} → 8.
  • Tags wie <nowiki> werden samt Inhalt nicht mitgezählt, weil sie vor dem Parser versteckt sind. Beispiel: {{#len:<nowiki>Dies ist ein </nowiki>Test}} → 4.

#pos:[edit]

Die Funktion #pos gibt die Position eines gegebenen Suchbegriffs innerhalb der Zeichenkette aus.

{{#pos:Zeichenkette|Suchbegriff|Suchbeginn}}

Der Parameter Suchbeginn ist optional und teilt der Funktion mit, ab welcher Stelle gesucht werden soll.

Wird der Suchbegriff gefunden, so wird die Stellennummer des ersten Zeichens seines ersten Auftauchens innerhalb der Zeichenkette ausgegeben. Die erste Stelle wird dabei mit 0 nummeriert. Wird der Suchbegriff nicht gefunden, wird nichts ausgegeben. Damit ist die Funktion auch ideal fßr den Test, ob die Zeichenkette den Suchbegriff ßberhaupt enthält.

Beispiele:

{{#pos:Das Wort zweimal taucht zweimal auf.|zweimal}} → 9
{{#pos:Das Wort zweimal taucht zweimal auf.|zweimal|10}} → 24
{{#pos:Das Wort zweimal taucht zweimal auf.|doppelt}} →

Hinweis Hinweis:

  • Diese Funktion unterscheidet Groß- und Kleinschreibung.
  • Die maximale Länge des Suchbegriffes ist in $wgStringFunctionsLimitSearch festgelegt.
  • Zeichen werden ordnungsgemäß gezählt, auch wenn sie in UTF-8 mehrere Bytes einnehmen. Beispiel: {{#pos:Ĺ˝mrĹžlina|lina}} → 4.
  • Wiki-Tags wie <nowiki> werden mitsamt ihrem Inhalt als eine einzige Stelle gezählt: {{#pos:<nowiki>Dies ist ein </nowiki>Test|Test}} → 1.

#rpos:[edit]

Die Funktion #rpos durchsucht eine Zeichenkette vom Ende an nach einem Suchbegriff.

 {{#rpos:Zeichenkette|Suchbegriff}}

Es wird die Stelle ausgegeben, an der der Suchbegriffs das letzte Mal innerhalb der Zeichenkette auftaucht. Dabei bedeutet 0 die letzte Stelle der Zeichenkette, und pro Schritt Richtung Anfang erhĂśht sich die ausgegebene Zahl um 1. Wenn der Suchbegriff nicht gefunden wird, wird -1 ausgegeben.

Hinweis Hinweis:

  • Diese Funktion unterscheidet Groß- und Kleinschreibung.
  • Die maximale Länge des Suchbegriffes ist in $wgStringFunctionsLimitSearch festgelegt.
  • Zeichen werden ordnungsgemäß gezählt, auch wenn sie in UTF-8 mehrere Bytes einnehmen. Beispiel: {{#rpos:Ĺ˝mrĹžlina|lina}} → 4.
  • Wiki-Tags wie <nowiki> werden mitsamt ihrem Inhalt als eine einzige Stelle gezählt: {{#rpos:<nowiki>Dies ist ein </nowiki>Test|Test}} → 1.

#sub:[edit]

Die Function #sub gibt ein TeilstĂźck einer Zeichenkette aus. Die Syntax ist:

{{#sub:Zeichenkette|Start des Teilstßcks|Länge des Teilstßcks}}

Der Start-Parameter gibt die erste Stelle des gewĂźnschten TeilstĂźcks innerhalb der Zeichenkette an. Dabei bezeichnet 0 die erste Stelle der Zeichenkette. Beispiel:

{{#sub:Erdbeereis|3}} → beereis
{{#sub:Erdbeereis|0}} → Erdbeereis.

Wenn der Start-Parameter negativ ist, wird vom Ende der Zeichenkette aus gezählt. Die letzte Stelle entspricht dabei -1. Beispiel:

{{#sub:Erdbeereis|-3}} → eis.

Der Parameter Länge legt die Maximallänge des auszugebenden Teilstßcks fest. Beispiel:

{{#sub:Erdbeereis|3|4}} → beer.

Wenn der Parameter Länge negativ ist, werden entsprechend viele Stellen vom Ende des Teilstßcks abgeschnitten. Beispiel:

{{#sub:Erdbeereis|3|-4}} → bee.

Hinweis Hinweis:

  • Die Längenangabe 0 wird ignoriert.
    • Beispiel: {{#sub:Eisbecher|3|0}} → becher
  • Wenn der Parameter Länge negativ und der Start-Parameter zu groß ist, wird nichts ausgegeben.
    • Beispiel: {{#sub:Eisbecher|3|-6}} →
  • Zeichen werden ordnungsgemäß gezählt, auch wenn sie in UTF-8 mehrere Bytes einnehmen. Beispiel: {{#sub:Ĺ˝mrĹžlina|3}} → Ĺžlina.
  • Wiki-Tags wie <nowiki> werden mitsamt ihrem Inhalt als eine einzige Stelle gezählt: {{#sub:<nowiki>Dies ist ein </nowiki>Test|1}} → Test.
  • Wenn die ursprĂźngliche Zeichenkette einen Doppelpunkt enthält ("etwa:so") und nun das gesamte TeilstĂźck vor dem Doppelpunkt entfernt wird, so (miss)versteht MediaWiki dies gegebenenfalls als EinrĂźckung.

#pad:[edit]

Die Funktion #pad verlängert eine gegebene Zeichenkette auf eine bestimmte Länge. Die Syntax lautet:

{{#pad:Zeichenkette|Länge|Fßllmaterial|Richtung}}

Der Parameter Länge gibt die gewßnschte Endlänge der Zeichenkette an.

Der Parameter FĂźllmaterial, falls angegeben, wird benutzt, um die fehlenden Stellen auszufĂźllen. Er kann aus einem einzelnen oder aus mehreren Zeichen bestehen, und wird so lange wiederholt, bis die LĂźcken aufgefĂźllt sind. Beispiel:

{{#pad:Eis|10|xX}} → xXxXxXxEis.

Wenn kein FĂźllmaterial angegeben wird, werden Leerzeichen zum AuffĂźllen verwendet.

Der Richtungs-Parameter kann einen der folgenden Werte annehmen:

  • left - es wird auf der linken Seite der Zeichenkette aufgefĂźllt. Beispiel: {{#pad:Eis|5|x|left}} → xxEis.
  • right - es wird auf der rechten Seite der Zeichenkette aufgefĂźllt. Beispiel: {{#pad:Eis|5|x|right}} → Eisxx.
  • center - die eingegebene Zeichenkette wird in der ausgegebenen zentriert. Beispiel: {{#pad:Eis|5|x|center}} → xEisx.

Standardwert ist left.

Die Funktion fßllt nun die gegebene Zeichenkette mit dem Fßllmaterial bis auf die angegebene Länge auf. Wenn die Zeichenkette bereits länger als die gewßnschte Ziellänge ist, wird sie nicht verändert.

Hinweis Hinweis:

  • Der Maximalwert fĂźr den Parameter Länge ist in $wgStringFunctionsLimitPad festgelegt.
  • Diese Funktion kann nur teilweise mit Zeichen umgehen, die in UTF-8 mehrere Bytes einnehmen. In der ursprĂźnglichen Zeichenkette werden sie wie normale Zeichen behandelt, im FĂźllmaterial allerdings nicht:
    {{#pad:Zmrzlina|12|z}} → zzzzZmrzlina
    {{#pad:Žmržlina|12|z}} → zzzzŽmržlina
    {{#pad:Žmržlina|12|ž}} → žžŽmržlina
  • Wiki-Tags wie <nowiki> werden nicht unterstĂźtzt. Wenn solche Tags in der Zeichenkette enthalten sind, werden sie entfernt.

#replace:[edit]

Die Funktion #replace ersetzt in einer gegebenen Zeichenkette einen Suchbegriff durch einen Ersetzungsbegriff. Es werden alle Auftritte des Suchbegriffes ersetzt.

{{#replace:Zeichenkette|suchen nach|ersetzen durch}}

Wenn kein Ersetzungsbegriff angegeben wird, wird der Suchbegriff aus der Zeichenkette entfernt.

Hinweis Hinweis:

  • Diese Funktion unterscheidet Groß- und Kleinschreibung. Zur Umgehung kann nur {{lc: ...}} benutzt werden, wodurch aber auch das Resultat durchgängig kleingeschrieben ist.
  • Die maximale Länge des Suchbegriffes ist in $wgStringFunctionsLimitSearch festgelegt.
  • Die maximal erlaubte Länge des Parameters ersetzen durch wird durch die globale Variable $wgStringFunctionsLimitReplace festgelegt.
  • Auch wenn bei ersetzen durch ein Leerzeichen angegeben wird, wird der Suchbegriff lediglich entfernt. Dies ist ein Nebeneffekt des MediaWiki-Parsers. Um ein Leerzeichen als Ersetzungsparameter zu benutzen, muss es in nowiki-Tags gesetzt werden.
    • Beispiel: {{#replace:Meine_kleine_feine_Seite|_|<nowiki> </nowiki>}} → Meine kleine feine Seite.
    • Bitte beachten: Dies ist die einzig akzeptable Verwendung von nowiki im Parameter ersetzen durch, da sonst nowiki benutzt werden kĂśnnte, um $wgStringFunctionsLimitReplace zu umgehen und eine große Anzahl Leerzeichen einzuschleusen. Daher wird der Inhalt von nowiki-Tags immer durch ein einzelnes Leerzeichen ersetzt.
  • Auch diese Funktion kann problemlos mit UTF-8-Multibyte-Zeichen umgehen. Beispiel: {{#replace:Ĺ˝mrĹžlina|Ĺž|z}} → Ĺ˝mrzlina.

#explode:[edit]

Die Funktion #explode teilt eine gegebene Zeichenkette in Abschnitte und gibt einen dieser Abschnitte aus. Die Syntax ist:

{{#explode:Zeichenkette|Trennmarke|auszugebender Abschnitt}}

Als zweiter Parameter (Trennmarke) ist das Zeichen oder die Zeichenkette anzugeben, an dem die Teilung erfolgen soll. Diese Trennmarke ist dann nicht Teil eines Abschnittes. Wenn zwei solche Trennmarken in der Ausgangszeichenkette direkt hintereinander auftauchen, so ensteht ein leerer Abschnitt zwischen ihnen. Wenn dieser Parameter nicht angegeben wird, wird ein einfaches Leerzeichen als Trennmarke genutzt.

Der dritte Parameter legt fest, welcher der Abschnitte ausgegeben werden soll. Abschnitte werden von 0 an durchnummeriert. Wenn dieser Parameter nicht angegeben wird, wird der erste Abschnitt (Nr. 0) ausgegeben. Wenn ein negativer Wert eingegeben wird, so werden die Abschnitte von hinten gezählt. In diesem Fall entspricht -1 dem letzten Abschnitt. Wenn der Abschnitt mit der eingegebenen Nummer nicht existiert, wird nichts ausgegeben. Beispiele:

  • {{#explode:Und wenn du das tolerierst| |2}} → du
  • {{#explode:Dateien/Bilder/Fotos|/|-1}} → Fotos
  • {{#explode:An%Prozentzeichen%geteilt|%|2}} → geteilt
  • {{#explode:Zu, wenige, Abschnitte|, |5}} →

Hinweis Hinweis:

  • Diese Funktion unterscheidet Groß- und Kleinschreibung.
  • Die maximale Länge der Trennmarke ist in $wgStringFunctionsLimitSearch festgelegt.
  • Zeichen werden auch korrekt gezählt, wenn sie ihn UTF-8 mehrere Bytes einnehmen. Beispiel: {{#explode:Ĺ˝mrĹžlina|Ĺž|1}} ergibt lina.

#urlencode: und #urldecode:[edit]

Diese zwei Funktionen arbeiten zusammen: #urlencode konvertiert eine Zeichenkette in eine URL-kompatiblen Syntax, während #urldecode eine solche Zeichenkette zurßckkonvertierten kann. Die Syntax ist einfach:

{{#urlencode:Wert}}
{{#urldecode:Wert}}

Hinweis Hinweis:

  • Diese Funktionen arbeiten, indem sie direkt die PHP-Funktionen urlencode() und urldecode() weitergeben.
  • FĂźr Anker innerhalb einer Seite sollte {{anchorencode}} anstelle von {{#urlencode}} genutzt werden. Die Ergebnisse von {{anchorencode}} sind kompatibel mit Links innerhalb von Seiten wie [[#Beispiel]], während {{#urlencode}}-generierte Werte dies nicht unbedingt sind.

Begrenzungen[edit]

Dieses Modul definiert drei globale Einstellungen:

Sie dienen dazu, die Funktionen mit der Zeitkomplexität laufen zu lassen, was vor DDoS-Attacken schßtzt.

$wgStringFunctionsLimitSearch[edit]

Diese Variable wird bei #pos, #rpos, #replace und #explode benutzt. All diese Funktionen suchen nach einem Suchbegriff in einem Text, was mit O(n*m) laufen kÜnnte und die Software damit anfälliger fßr DDoS-Attacken machen wßrde. Durch Festlegung dieser Variable auf einen bestimmten, kleinen Wert wird die Senkung auf O(n) erreicht.

Diese Einstellung beschränkt die HÜchstlänge des Suchbegriffs.

Der Standardwert sind 30 Multibyte-Zeichen.

$wgStringFunctionsLimitReplace[edit]

Diese Variable wird bei #replace benutzt. Diese Funktion ersetzt alle Vorkommen eines Suchbegriffs durch einen anderen, was genutzt werden könnte, um in kurzer Zeit sehr große Datenmengen zu generieren, und die Software damit anfällig für DDoS-Attacken machen würde.

Diese Einstellung beschränkt die HÜchstlänge des Ersetzungsbegriffs.

Der Standardwert sind 30 Multibyte-Zeichen.

$wgStringFunctionsLimitPad[edit]

Diese Variable wird bei #pad benutzt. Diese Funktion erzeugt eine Zeichenkette mit einer gewünschten Länge, was genutzt werden könnte, um in kurzer Zeit sehr große Datenmengen anzufordern, und die Software damit anfällig für DDoS-Attacken machen würde.

Diese Einstellung beschränkt die HÜchstlänge der fertigen Zeichenkette.

Der Standardwert sind 100 Multibyte-Zeichen.

Installation[edit]

Diese Erweiterung erfordert MediaWiki 1.7+ und PHP 5.

FĂźr die Installation in MediaWiki sind folgende Schritte vorzunehmen:

  1. Kopiere den Quelltext von SVN
    ...oder, falls du Kommandozeilen-Zugriff hast, kopiere ihn direkt per:
    svn co http://svn.wikimedia.org/svnroot/mediawiki/trunk/extensions/StringFunctions/
  2. FĂźge der LocalSettings.php im Stammverzeichnis deiner MediaWiki-Installation folgendes hinzu:
require_once ("$IP/extensions/StringFunctions/StringFunctions.php");

Versionsgeschichte[edit]

StringFunctions 2.0 wurde mit MediaWiki 1.7 und hĂśher erfolgreich getestet.

Versionsgeschichte:

  • Nov 30, 2008 -- v2.0.3 -- Angepasst an Parser-Veränderungen bei MediaWiki 1.14
  • Oct 27, 2008 -- v2.0.2 -- Beschreibung der Erweiterung internationalisiert.
  • Aug 27, 2008 -- v2.0.1 -- Verwendung von regexp bei #len hinzugefĂźgt.
  • May 11, 2008 -- v2.0 -- StringFunctions werden nun bei SVN gepflegt.
  • Dec 10, 2007 -- v2.0 -- Funktionen neu geschrieben, um von mbstring unabhängig zu sein und um mit <nowiki> u.ä. korrekt umgehen zu kĂśnnen.
  • Aug 28, 2007 -- v1.10 -- Negative Stellen zu #explode hinzugefĂźgt.
  • Jan 30, 2007 -- v1.9 -- Obergrenzen fĂźr #pos, #pad, #replace, #explode hinzugefĂźgt.
  • Oct 30, 2006 -- v1.8 -- Angepasst an MediaWiki 1.8.
  • Oct 26, 2006 -- v1.6 -- Leerzeichen bei #rpos und #replace repariert.
  • Oct 1, 2006 -- v1.5 -- #rpos, #pad, #replace, #explode hinzugefĂźgt.
  • May 18, 2006 -- v1.2 -- #toURL und #fromURL umbenannt, um sie auf die MediaWiki-Funktion {{urlencode:}} abzustimmen.
  • May 18, 2006 -- v1.1 -- #pos hinzugefĂźgt.
  • May 15, 2006 -- v1.0 -- Erste stabile Version.

Siehe auch[edit]