Help:Extension:ParserFunctions/cs

poskytuje jedenáct dalších funkcí parseru k doplnění "", která jsou již v MediaWiki přítomná. (Může být nakonfigurováno tak, aby poskytovalo další funkce syntaktického analyzátoru pro zpracování řetězců. Tyto řetězcové funkce jsou zdokumentovány .) Všechny funkce analyzátoru poskytované tímto rozšířením mají podobu:

#expr
Tato funkce vyhodnocuje matematický výraz a vrací vypočítanou hodnotu. Tato funkce je k dispozici také na stránce prostřednictvím funkce.



Dostupné operátory jsou uvedeny vpravo, v pořadí podle priority. Viz Nápověda:Výpočet pro více informací o funkci každého operátora. Přesnost a formát vráceného výsledku se bude lišit v závislosti na operačním systému serveru, na kterém je spuštěna wiki, a na formátu čísla jazyka webu.

Při vyhodnocování pomocí booleovské algebry se nula vyhodnocuje jako  a jakákoli nenulová hodnota, kladná nebo záporná, se vyhodnocuje jako  :



Prázdný vstupní výraz vrací prázdný řetězec. Neplatné výrazy vracejí jednu z několika chybových zpráv, které lze zachytit pomocí funkce :



Pořadí sčítání a odčítání operandů před nebo za číslem je smysluplné a lze s ním zacházet jako s kladnou nebo zápornou hodnotou namísto s operandem s chybným vstupem:



Pokud používáte výstup pomocí magických slov, musíte je nejprve naformátovat, abyste odstranili čárky a přeložili číslice. Například vede k, kde chceme 0, které lze získat pomocí. To je obzvláště důležité v některých jazycích, kde jsou překládány číslice. Například v bengálštině produkuje ৩০,০৬১.



Zaokrouhlování
Rounds z čísla nalevo na násobek 1/10 zvýšené na mocninu, s exponentem rovným zkrácené hodnotě čísla uvedeného napravo.

Chcete-li zaokrouhlit nahoru nebo dolů, použijte unary  nebo   resp.

Řetězce
Výrazy fungují pouze s číselnými hodnotami. Nemohou porovnávat řetězce nebo znaky. K tomu lze použít.



#if
Tato funkce vyhodnocuje testovaný řetězec a určuje, zda je nebo není prázdný. Testovaný řetězec obsahující pouze mezeru je považován za prázdný.





Tato funkce nejprve otestuje, zda první parametr není prázdný. Pokud není první parametr prázdný, funkce zobrazí druhý argument. Pokud je první parametr prázdný nebo obsahuje pouze prázdná místa (mezery, řádky atd.), zobrazí se třetí argument.



Testovaný řetězec je vždy interpretován jako čistý text, takže matematické výrazy se nevyhodnocují (viz #ifexpr):



Poslední parametr (false) může být vynechán:



Funkce může být vnořena. Chcete-li to provést, vnořte vnitřní funkci  v její plné podobě namísto parametru uzavírací funkce. Je možné až sedm úrovní vnoření. Může to záviset na wiki nebo na omezení paměti.

Parametr můžete také použít jako testovaný řetězec v příkazu. Musíte se ovšem ujistit, že za název proměnné přidáte  (symbol pipe, svislítko, svislá čára). (Pokud parametr nemá hodnotu, vyhodnotí se řetězec " " jako prázdný.)



Více na stránce, kde jsou další příklady této funkce analyzátoru.

#ifeq
Tato syntaktická funkce porovnává dva vstupní řetězce. Určuje, zda jsou totožné a na základě výsledku vrací jeden ze dvou řetězců. Pokud je požadováno další srovnání a výstupní řetězce, zvažte použití přepínače.



Pokud mají oba řetězce platné číselné hodnoty, jsou řetězce porovnávány numericky:



Jinak je porovnání provedeno jako text. Toto srovnání rozlišuje velká a malá písmena:


 * →  (porovnání s podobným příkladem výše, bez uvozovek)
 * →  (ve srovnání s podobným příkladem výše, přičemž   vrací první platné číslo)
 * →  (porovnání s podobným příkladem výše, bez uvozovek)
 * →  (ve srovnání s podobným příkladem výše, přičemž   vrací první platné číslo)

Jako praktický příklad zvažte existující. Pomocí parseru vyberte mezi dvěma standardními časy, krátkým a dlouhým. Parametr bere jako první vstup pro porovnání s "krátkým" řetězcem – neexistuje žádná konvence pro pořadí, ale je jednodušší jej přečíst, pokud je parametr na prvním místě. Kód šablony je definován jako:



následující možný výsledek:


 * → 20
 * → 40
 * → 40

#iferror
Tato funkce vezme vstupní řetězec a vrátí jeden ze dvou výsledků. Funkce se vyhodnotí na, pokud vstupní řetězec obsahuje objekt HTML s chybou  , generovaný jinými funkcemi analyzátoru, jako jsou  ,   a  , chyby šablon, jako jsou smyčky a rekurze a další chyby analyzátoru "failsoft".



Jeden nebo oba zpětné řetězce lze vynechat. Pokud je řetězec  (správný) vynechán, je vrácen testovací řetězec , pokud není chybný. Pokud je také vynechán řetězec, vrací se při chybě prázdný řetězec:


 * → &zwnj;
 * → &zwnj;
 * → &zwnj;
 * → &zwnj;
 * → &zwnj;
 * → &zwnj;

Some errors may cause a tracking category to be added, using  will not suppress the addition of the category.

#ifexpr
Tato funkce vyhodnocuje matematický výraz a vrací jeden ze dvou řetězců v závislosti na booleovské hodnotě výsledku:



Vstup  (výraz) je vyhodnocen přesně jako u   výše, přičemž jsou k dispozici stejné operátory. Výstup je pak vyhodnocen jako booleovský výraz.

Prázdný vstupní výraz je vyhodnocen jako :



Jak bylo uvedeno výše, nula se vyhodnotí jako  a jakákoli nenulová hodnota se vyhodnotí jako , takže tato funkce je ekvivalentní funkci používající pouze   a  :



s výjimkou prázdného nebo nesprávného vstupního výrazu (chybová zpráva je považována za prázdný řetězec; není rovno nule, takže dostaneme hodnotu  (hodnota je pravdivá)).



porovnání



Je možné vynechat jednu nebo obě vrácené hodnoty. Žádný výstup není uveden, pokud je příslušná větev ponechána prázdná:



Boolean operators of equality or inequality operators are supported.



#ifexist
Tato funkce vezme vstupní řetězec, interpretuje jej jako název stránky a vrací jednu ze dvou hodnot v závislosti na tom, zda stránka na místní wiki existuje.



Funkce se vyhodnotí jako, pokud stránka existuje, ať už obsahuje obsah, je jakoby prázdná (obsahuje metadata, jako jsou odkazy na kategorie nebo , ale obsah je neviditelný), je prázdná nebo je. Pouze stránky, které jsou znovu propojeny, se vyhodnotí jako, včetně případů, kdy stránka dříve existovala, ale byla smazána.



Funkce se vyhodnotí jako  pro, které byly přizpůsobeny, a pro , které jsou definovány softwarem.



Pokud stránka kontroluje cíl pomocí, pak se tato stránka objeví v seznamu  pro cílovou stránku. Takže pokud byl kód  zahrnut aktuálně na této stránce, /Foo zobrazí.

Na wiki používajících sdílené úložiště médií lze  použít ke kontrole, zda byl soubor nahrán do úložiště, ale nikoli do samotné wiki:



Pokud byla pro soubor vytvořena stránka místního popisu, výsledkem je exists pro všechny výše uvedené.

nefunguje v odkazech na interwiki.



omezení pro ifexist
je považován za "cennou parserovou funkci". Na libovolnou stránku lze zahrnout pouze omezený počet funkcí (včetně funkcí uvnitř přenesených šablon). Pokud je tento limit překročen, všechny další funkce  automaticky vrátí false, ať už cílová stránka existuje nebo ne a stránka je zavedena do kategorie Category:. Název se může lišit v závislosti na jazyce obsahu vaší wiki.

Pro některé případy použití je možné emulovat (schopnost napodobovat jeden systém jiným) efekt ifexist s css pomocí selektorů  (pro výběr odkazů na neexistující stránky) nebo   (pro výběr odkazů na existující stránky). Navíc, protože počet cenných syntaktických funkcí, které lze použít na jedné stránce, je řízen, lze také v případě potřeby zvýšit limit v LocalSettings.php.



ifexist a chybějící stránky
Stránka, která neexistuje a je testována na použití #ifexist, skončí na seznamu hledaných stránek. Více najdete na stránce a v dokumentaci k šabloně w:Template:Linkless exists najdete jak to lze obejít.

#rel2abs
Tato funkce převede relativní cestu k souboru na absolutní cestu k souboru.



V rámci vstupu  je platná následující syntaxe:


 * → aktuální úroveň
 * → přejde o jednu úroveň výše
 * → přejde o jednu úroveň dolů do podadresáře /foo

Pokud není zadán, bude místo toho použit celý název stránky:



Neplatná syntaxe, například  nebo , je ignorována. Protože nejsou povoleny více než dvě po sobě jdoucí tečky, lze k oddělení po sobě jdoucích příkazů použít tyto sekvence:



Pro podobnou skupinu funkcí viz také Nápověda:Kouzelná slovíčka#URL data. Mezi vestavěné funkce analyzátoru patří: 'localurl:', 'fullurl:', 'anchorencode:' atd.

#switch
Související stránky: w:Help:Switch parser function

Tato funkce porovnává jednu vstupní hodnotu s několika testovacími případy a v případě nalezení shody vrací přidružený řetězec.

Příklady:




 * 1) switch se značkami částečného převodu může ovlivnit konfigurační soubor, který umožňuje editoru, který není obeznámen s kódováním šablon, prohlížet a upravovat konfigurovatelné prvky.

Výchozí
(výchozí výsledek) je vrácen, pokud žádný řetězec  neodpovídá   (srovnávacímu řetězci):



V této syntaxi musí být výchozím výsledkem poslední parametr a nesmí obsahovat nezpracované znaménko rovná se (znaménko rovná se bez ). Pokud ano, bude to považováno za srovnání velkých a malých písmen a pokud se žádné případy neshodují, nezobrazí se žádný text. Důvodem je, že výchozí hodnota nebyla definována (je prázdná). Pokud se však případ shoduje, bude vrácen přidružený řetězec.



Alternativně může být výchozí výsledek explicitně deklarován řetězcem  z " ".

Výchozí výsledky deklarované tímto způsobem mohou být umístěny kdekoli v rámci funkce:



Pokud je parametr  vynechán a nedojde k žádné shodě, nevrací se žádný výsledek  :





Výsledky seskupení
Je možné nechat hodnoty 'propadnout', když několik řetězců  vrací stejný řetězec. Tím minimalizujeme duplicitu.

Zde se všechny případy 2, 3 a 4 vrátí ; případy 6 a 7 vrátí. " " v posledním parametru může být ve výše uvedeném případě vynechán.



Použití s parametry
Funkce může být použita s parametry jako zkušební řetězec. V tomto případě není nutné umístit svislítko za název parametru, protože je velmi nepravděpodobné, že se rozhodnete nastavit případ jako řetězec " ". (Toto je hodnota, kterou bude parametr přednastaven, pokud svislítko chybí a parametr neexistuje nebo nemá hodnotu. Podívejte se na stránku .)



Ve výše uvedeném případě, pokud se  rovná , funkce vrátí. Pokud se rovná, funkce vrátí. Pokud je parametr prázdný nebo neexistuje, vrátí funkce.

Stejně jako ve výše uvedené části lze případy kombinovat a získat jediný výsledek.



Pokud se  rovná ,   nebo  , funkce vrátí. Pokud se rovná, funkce vrátí. Pokud je parametr prázdný nebo neexistuje, vrátí funkce.

Kromě toho lze výchozí výsledek vynechat, pokud si nepřejete nic vracet, pokud hodnota testovacího parametru neodpovídá žádnému z případů.



V tomto případě funkce vrací prázdný řetězec, pokud neexistuje  a je rovno   nebo , v tomto případě vrací  , respektive.

To má stejný účinek jako prohlášení výchozího výsledku za prázdný.



Pokud se z nějakého důvodu rozhodnete nastavit případ jako " ", funkce vrátí výsledek tohoto případu, pokud parametr neexistuje nebo nemá hodnotu. Parametr by musel existovat a mít jinou hodnotu než řetězec " ", aby vrátil výchozí výsledek funkce.


 * (pokud  neexistuje nebo je prázdný):
 * →  Foo 
 * (když  má hodnotu " "):
 * →  Bar 
 * (když  má hodnotu  ):
 * →  Foo 

V tomto hypotetickém případě budete muset do parametru přidat svislítko.



Srovnávací chování
Stejně jako u  je porovnání provedeno číselně, pokud porovnávaný řetězec i řetězec případu jsou číselné nebo jako řetězec citlivý na velikost písmen jinak:





Řetězec  může být prázdný:



Jakmile je nalezena shoda, následující  (případy) jsou ignorovány:





Prosté znaky rovná se
Řetězce "Case" nemohou obsahovat nezpracované rovnítko. Chcete-li to obejít, použijte kouzelné slovo =, vytvořte šablonu = obsahující jediné znaménko rovná se:  nebo nahraďte znaménko rovná se HTML kódem.

Příklad:



Nahrazování #ifeq
lze použít ke snížení hloubky rozšíření.

Například:



je ekvivalentní



tj. hluboké založení, lineární:

Na druhou stranu by výměna přepínače mohla být komplikovaná, případně nepraktická pro IF vnořené do obou větví (zobrazeny s alternativami odsazení, odsazené na obou stranách), čímž by se vytvořil plný symetrický strom:

#time
Tato syntaktická funkce bere datum a nebo čas (v gregoriánském kalendáři) a formátuje ho podle dané syntaxe. Lze určit objekt datum / čas. Výchozí hodnota je hodnota kouzelného slova, tj. čas, kdy byla stránka naposledy vykreslena do HTML.



Seznam přijatých formátovacích kódů je uveden v tabulce vpravo. Jakýkoli znak ve formátovacím řetězci, který není rozpoznán, je předán nezměněný. To platí také pro mezery (systém je pro interpretaci kódů nepotřebuje). Existují také dva způsoby, jak uniknout znakům uvnitř formátovacího řetězce: Kromě toho je spřežka  interpretována jako jediné doslovné "x".
 * 1) Zpětné lomítko následované znakem formátování je interpretováno jako jediný literálový znak.
 * 2) Znaky uzavřené ve dvojitých uvozovkách se považují za doslovné znaky a uvozovky se odstraní.

Vzhledem k tomu, že se seznam formátovacích kódů neustále vyvíjí (s podporou nových kalendářů nebo nových datových polí vypočítaných a formátovaných jinak), měli byste vyhýbatt všem doslovným znakům (nejen písmenům ASCII, která se aktuálně používají formátovacími kódy), které je třeba předat nezměněné.

Bohužel v současné době není ASCII jednoduchá uvozovka stále uznávána jako jednoduchá alternativa pro označení doslovného textu k aktuálně podporovaným dvojitým uvozovkám ASCII (například dvojité uvozovky jsou povinné pro jiná použití, jako je vymezení hodnot řetězců v JSON, C, C++...) a zpětná lomítka (která musí být escapována také v řetězcových konstantách používaných mnoha jazyky, včetně JSON, C, C++, PHP, JavaScript, Lua). Stále tedy nemůžete vložit žádné doslovné dvojité uvozovky, aniž byste je neuvedli zpětným lomítkem (nebo můžete místo toho použít jiné složené, hranaté nebo čtvercové uvozovky).



Objekt  může být v jakémkoli formátu akceptovaném funkcí strtotime v PHP. Jsou přijímány jak absolutní (např. ), tak relativní (např.  ) a kombinované časy (např.  ) časy.


 * &rarr; 
 * &rarr; 
 * &rarr; 
 * &rarr; 
 * &rarr; 
 * &rarr; 
 * &rarr; 

(kód jazyka) v ISO 639-3 (?) Umožňuje zobrazení řetězce ve vybraném jazyce



Parametr  určuje, zda objekt datum/čas odkazuje na místní časové pásmo nebo UTC.

Toto je booleovský parametr: Jeho hodnota je určena přetypováním hodnoty argumentu (pro podrobnosti o tom, jak se řetězec přetypuje na booleovské hodnoty viz oficiální dokumentace PHP).

Podrobnosti viz následující příklady:





Pokud jste vypočítali časovou značku Unixu, můžete ji použít při výpočtech data tak, že předběžně čekáte na symbol.



Lze zadat úplná nebo částečná absolutní data; funkce "vyplní" části data, které nejsou specifikovány pomocí aktuálních hodnot:



Čtyřciferné číslo se vždy interpretuje jako rok, nikdy ne jako hodiny a minuty:



Šestimístné číslo je interpretováno jako hodiny, minuty a sekundy, pokud je to možné, ale jinak jako chyba (nikoli například rok a měsíc):


 * →  Vstup je považován za čas, pravděpodobněji než za rok + měsíc.
 * →  Ačkoli 19:60:09 není platný čas, 196009 není interpretován jako září 1960.

Funkce převádějící matematické znaky na data:



Celková délka formátovacích řetězců  je omezena na 6000 znaků.



Problém s časovými pásmy
Tato funkce syntaktického analyzátoru #time (konkrétně v PHP DateTime) obsahuje chybu, která neumožňuje předávání nečísel jako kompenzace relativního časového pásma. Tento problém se netýká při použití hodinového časového pásma, jako je EDT. Například:


 * &rarr;

Indie je však s časovým posunem +5,5 hodiny od UTC a proto použití jejího časového pásma obvykle neumožňuje správný výpočet relativního časového pásma. Co se stane:


 * &rarr;

Chcete-li tento problém vyřešit, jednoduše převeďte čas na minuty nebo sekundy, například:


 * &rarr;
 * &rarr;

(Tim Starling, vývojář této funkce, poskytl přesnou syntaxi tohoto řešení.)

#timel
Tato funkce je identická s, když parametr   je nastaven na  , takže vždy používá místní čas wiki (jak je nastaveno v ).

Syntaxe funkce je:





Podívejte se například na následující příklady:





#titleparts
Tato funkce rozdělí nadpis stránky na segmenty na základě lomítek a poté vrátí některé z těchto segmentů jako výstup.



Pokud není zadán parametr počet segmentů k návratu, je výchozí hodnota "0", která vrací všechny segmenty z prvního segmentu k návratu (včetně). Pokud není zadán parametr první segment k návratu nebo je "0", bude výchozí hodnota "1":


 * →  See also.
 * →  See also.

Pro obě hodnoty jsou akceptovány záporné hodnoty. Záporné hodnoty pro parametr počet segmentů, které se mají vrátit ve skutečnosti 'odstraňují' segmenty z konce řetězce. Záporné hodnoty pro první segment, který se vrátí se překládá jako "začít s tímto segmentem počítáním zprava":


 * →  Odřízne jeden segment od konce řetězce. Viz též.
 * →   Odřízne všechny 4 segmenty od konce řetězce
 * →   Odřízne 5 segmentů od konce řetězce (více než existuje)
 * →   Vrací poslední segment. Viz též.
 * →   Odřízne jeden segment od konce řetězce a poté vrátí druhý segment a dále
 * →   Začne kopírovat u druhého posledního prvku. Odřízne jeden segment od konce řetězce

Před zpracováním je parametr pagename (jméno stránky) dekódován HTML: Pokud obsahuje některé standardní entity HTML znaků, budou převedeny na prosté znaky (interně kódované pomocí UTF-8, tj. stejné kódování jako na zdrojové stránce MediaWiki pomocí této funkce analyzátoru).


 * Například jakýkoli výskyt,   nebo   v pagename bude nahrazen.
 * Nevykonává se žádné jiné konverze z HTML na prostý text, takže značky HTML zůstanou v tomto počátečním kroku neporušené, i když jsou v názvech stránek neplatné.

Poté je, pokud je to možné, dekódovaný název stránky kanonizovaný do standardního názvu stránky podporovaného MediaWiki:


 * 1) Všechna podtržítka jsou automaticky nahrazena mezerami:
 * →  Ne bah_boo, navzdory podtržítku v originálu.
 * 1) Řetězec je rozdělen maximálně 25krát. Další lomítka jsou ignorována a 25. prvek bude obsahovat zbytek řetězce. Řetězec je také omezen na 255 znaků, protože je považován za název stránky:
 * Pokud jste z jakéhokoli důvodu potřebovali posunout tuto funkci na její limit, i když je velmi nepravděpodobné, je možné obejít 25 dělený limit volání vnořených funkcí:
 * 1) Nakonec se první dílčí řetězec kapitalizuje podle nastavení velkých písmen v místní wiki (pokud se tento dílčí řetězec také začíná názvem místního jmenného prostoru, je tento název jmenného prostoru také normalizován).
 * 1) Nakonec se první dílčí řetězec kapitalizuje podle nastavení velkých písmen v místní wiki (pokud se tento dílčí řetězec také začíná názvem místního jmenného prostoru, je tento název jmenného prostoru také normalizován).
 * 1) Nakonec se první dílčí řetězec kapitalizuje podle nastavení velkých písmen v místní wiki (pokud se tento dílčí řetězec také začíná názvem místního jmenného prostoru, je tento název jmenného prostoru také normalizován).

{{Warning|1= Některé znaky, které jsou v názvu stránky nezákonné, způsobí, že #titleparts nebude řetězec analyzovat:


 * → {{#titleparts: {one/two} | 1 | 1 }}. Nevytváří očekávané: {one
 * → {{#titleparts: page/123 | 1 | 2 }}. Nefunguje, protože závorky jsou v názvech stránek nezákonné a tato funkce analyzátoru nezpracovává odkazy vložené do jeho vstupního parametru pagename, i když používají syntaxi MediaWiki nebo jakékoli jiné značky HTML nebo MediaWiki.
 * → "{{#titleparts: red/#00FF00/blue| 1 | 3 }}". Nefunguje, protože „#“ je také v nadpisech stránek nezákonné.

}}

Řetězcové funkce
Všechny tyto funkce jsou integrované z rozšíření StringFunctions, ale jsou k dispozici, pouze pokud správce nastaví   na.

Všechny tyto funkce fungují v čase O(n), což je činí bezpečnými proti útokům DoS.

#len
Funkce #len vrací délku daného řetězce. Syntaxe je:

Návratová hodnota je vždy počet znaků ve zdrojovém řetězci (po rozšíření vyvolání šablony, ale před převodem na HTML). Pokud není zadán žádný řetězec, je návratová hodnota nula.

#pos
Funkce #pos vrací pozici daného vyhledávaného dotazu v řetězci. Syntaxe je:

Parametr offset, pokud je zadán, říká počáteční pozici, kde by se tato funkce měla začít hledat.

Pokud je hledaný výraz nalezen, je návratovou hodnotou celé číslo první pozice v řetězci.

Pokud není hledaný výraz nalezen, vrátí funkce prázdný řetězec.

#rpos
Funkce #rpos vrací poslední pozici daného vyhledávaného dotazu v řetězci. Syntaxe je:

Pokud je nalezen hledaný výraz, je návratová hodnota celé číslo jeho nulové pozice v řetězci.

Pokud není hledaný výraz nalezen, vrátí funkce -1.

#sub
Funkce #sub vrací podřetězec z daného řetězce. Syntaxe je:

Parametr start, pokud je kladný (nebo nula), určuje index prvního znaku, který má být vrácen, založený na nule.

Příklad: vrací.

vrací.

Pokud je parametr start záporný, určuje, kolik znaků od konce by mělo být vráceno.

Příklad: vrací.

Parametr length, pokud je přítomen a je kladný, určuje maximální délku vráceného řetězce.

Příklad: vrací.

Pokud je parametr length záporný, určuje, kolik znaků bude vynecháno od konce řetězce.

Příklad: vrací.

Pokud je parametr start záporný, určuje, kolik znaků od konce by mělo být vráceno. Parametr length, pokud je přítomen a je kladný, určuje maximální délku vráceného řetězce od počátečního bodu.

Příklad: vrací.

#count
Funkce #count vrací, kolikrát se daný podřetězec objevil v zadaném textu.

#replace
Funkce #replace vrátí daný řetězec se všemi výskyty hledaného výrazu nahrazeného nahrazujícím výrazem.

Pokud je search term nespecifikovaný nebo prázdný, bude prohledán jediný prostor.

Pokud je replacement term nespecifikovaný nebo prázdný, budou všechny výskyty search term z řetězce odstraněny.

V současné době syntaxe neposkytuje přepínač pro přepínání nastavení rozlišování velkých a malých písmen. Jako řešení však můžete použít magická slova určená k formátování. (např. ) Pokud například chcete z řetězce odstranit slovo "Category:" bez ohledu na velikost písmen, můžete zadat:
 * Nahrazení velkých a malých písmen:

Nevýhodou je však to, že výstup bude malými písmeny. Pokud chcete zachovat velikost písmen i po výměně, musíte k dosažení použít více úrovní vnoření (tj. více nahrazujících volání).

#explode
Funkce #explode rozdělí daný řetězec na části a poté vrátí jednu z částí. Syntaxe je:

Parametr delimiter určuje řetězec, který se použije k rozdělení string na části. Tento řetězec delimiter pak není součástí žádné části a když jsou dva řetězce delimiter vedle sebe, vytvoří mezi nimi prázdnou část. Pokud není tento parametr zadán, použije se jedna mezera. Parametr limit je k dispozici pouze v ParserFunctions, nikoli v samostatné verzi StringFunctions. Umožňuje omezit počet vrácených částí. Přičemž veškerý zbývající text bude zahrnut ve výsledné části.

Parametr position určuje, která část má být vrácena. Části se počítají od 0. Pokud není tento parametr zadán, použije se první část (s číslem 0). Když je jako position použita záporná hodnota, části se počítají od konce. V tomto případě číslo dílu -1 znamená poslední část. Příklady:


 * vrací
 * vrací
 * vrací
 * vrací

Vrácená hodnota je "pozice" -té části. Pokud je méně částí, než určuje pozice, je vrácen prázdný řetězec.

#urldecode
převádí únikové znaky z řetězce ' URL kódováno' zpět na čitelný text. Syntaxe je:

Poznámky:
 * Tato funkce funguje přímým odhalením funkce PHP urldecode.
 * Odkaz na znakový kód lze najít na www.w3schools.com.
 * Opak,, byl integrován do MediaWiki od verze 1.18; příklady viz.
 * urldecode byl sloučen ze Stringfunctions v roce 2010 přidělením 1b75afd18d3695bdb6ffbfccd0e4aec064785363

Limity
Tento modul definuje tři globální nastavení:


 * $wgStringFunctionsLimitSearch
 * $wgStringFunctionsLimitReplace
 * $wgStringFunctionsLimitPad

Používají se k omezení některých parametrů některých funkcí, aby se zajistilo, že funkce budou fungovat v O(n) časové složitosti, a jsou proto bezpečné proti útokům DoS.

$wgStringFunctionsLimitSearch
Toto nastavení používají #pos, #rpos, #replace a #explode. Všechny tyto funkce hledají podřetězec ve větším řetězci, zatímco fungují, což může běžet v O(n*m), a proto činí software zranitelnějším vůči útokům DoS. Nastavením této hodnoty na určité malé číslo se časová složitost na O(n) sníží.

Toto nastavení omezuje maximální povolenou délku hledaného řetězce.

Výchozí hodnota je 30 vícebajtových znaků.

$wgStringFunctionsLimitReplace
Toto nastavení používá #replace. Tato funkce nahrazuje všechny výskyty jednoho řetězce jiným řetězcem, který lze použít k rychlému generování velkého množství dat, a proto činí software zranitelnějším vůči útokům DoS. Toto nastavení omezuje maximální povolenou délku nahrazujícího řetězce.

Výchozí hodnota je 30 vícebajtových znaků.



Náhrady
Funkce syntaktického analyzátoru mohou být nahrazeny předponou hash (#) znaku :


 * → kód   bude vložen do wikitextu, protože stránka existuje.

Náhrada nefunguje v rámci. Pro tento účel můžete použít &hellip;.

Přesměrování
Zejména   by se mohl hodit v  na stránky obsahující data, ale to nefunguje.



Únikové znaky svislítka v tabulkách
Funkce analyzátoru změní syntaxi a znaky svislé čáry, přičemž všechny nezpracované znaky svislé čáry budou považovat za oddělovače parametrů. Aby se tomu předešlo, většina wiki používala šablonu    :! s obsahem pouze nezpracovaného znaku svislítka, protože MW 1.24 jej nahradila skupinou znaků. Tím se "skryje" svislítko (roura, trubka, svislá čára) před analyzátorem MediaWiki, což zajistí, že se nepoužije, dokud nebudou rozbaleny všechny šablony a proměnné na stránce. Poté bude interpretováno jako řádek tabulky nebo oddělovač sloupců. Alternativně lze použít základní tabulku HTML. I když je to méně intuitivní a více náchylnější k chybám.

Znaku svislé čáry se můžete také, pro zobrazení základního, neinterpretovaného znaku, vyhnout pomocí entity HTML:.



Odstraňování mezer
Bílé znaky (mezery), včetně nových řádků, tabulátorů a mezer, jsou odstraněny ze začátku a konce všech parametrů těchto funkcí analyzátoru. Pokud to není žádoucí, lze řetězce porovnávat po uvedení do uvozovek.



Chcete-li zabránit oříznutí předcházejících a následujících částí, podívejte se na m:Template:If. Někteří lidé to dosahují pomocí zápisu &lt; &gt;  &lt; /nowiki &gt; místo mezer.


 * → foofoo
 * → foofoo

Tuto metodu však lze použít k vykreslení pouze jednoho znaku mezery, protože syntaktický analyzátor potlačuje více znaků mezery v jednom řádku do jednoho znaku.




 * || → || foofoo 
 * }

V tomto příkladu se styl  používá k vynucení bílého prostoru, který má být prohlížečem zachován. Ale ani s ním nejsou mezery zobrazeny. K tomu dochází proto, protože mezery jsou před odesláním do prohlížeče odstraněny softwarem.

Toto chování je možné vyřešit nahrazením mezer znaky  (breakable space(rozbitný prostor)) nebo znaky   (non-breakable space(nerozbitný prostor)), protože nejsou měněny softwarem:


 * →  foofoo 
 * → foofoo

Beware that not all parameters are created equal. In ParserFunctions, whitespace at the beginning and end is always stripped. In templates, whitespace at the beginning and end is stripped for named parameters and named unnamed parameters but not from unnamed parameters:


 * → foofoo
 * → foofoo
 * → foofoo



Související stránky

 * m:Help:Calculation
 * m:Help:Newlines and spaces
 * m:Help:Comparison between ParserFunctions syntax and TeX syntax
 * , an (incomplete) list of parser functions added by core and extensions.
 * Module:String zastarávající
 * Parser functions for Wikibase (the extensions that enables Wikidata): d:Special:MyLanguage/Wikidata:How to use data on Wikimedia projects
 * Module:String zastarávající
 * Parser functions for Wikibase (the extensions that enables Wikidata): d:Special:MyLanguage/Wikidata:How to use data on Wikimedia projects
 * Parser functions for Wikibase (the extensions that enables Wikidata): d:Special:MyLanguage/Wikidata:How to use data on Wikimedia projects