Help:Extension:ParserFunctions/cs

Rozšíření poskytuje jedenáct dalších syntaktických funkcí pro doplnění "", které jsou již na MediaWiki přítomny. (Může být nakonfigurován tak, aby poskytoval další funkce syntaktického analyzátoru pro zpracování řetězců; tyto řetězcové funkce jsou dokumentová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é v 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í boolean algebry se nula vyhodnocuje na  a jakákoli nenulová hodnota, kladná nebo záporná, se vyhodnocuje na  :



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 magických slov, musíte je nejprve naformátovat, abyste odstranili čárky a přeložili číslice. Například má za následek, kde chceme 0, které lze získat pomocí. To je obzvláště důležité v některých jazycích, kde jsou přeloženy čí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 číslovými hodnotami, nemohou porovnávat řetězce nebo znaky. Místo toho lze použít.



#if
Tato funkce vyhodnocuje testovací řetězec a určuje, zda je nebo není prázdný. Zkušební ř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.



Testovací řetězec je vždy interpretován jako čistý text, takže matematické výrazy se nevyhodnocují:



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 #if v její plné podobě namísto parametru uzavírací funkce #if. Je možné až sedm úrovní vnoření. Může záviset na wiki nebo na omezení paměti.

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



Viz, 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 vrací jeden ze dvou řetězců na základě výsledku. 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á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ými a dlouhými. Tento parametr bere jako první vstup k porovnání s řetězcem "short" – neexistuje žádná konvence pro objednávku, ale je jednodušší přečíst, pokud je parametr první. Kód šablony je definován jako:



následující 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 šablony, 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;

#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átoři. Výstup je pak vyhodnocen jako booleovský výraz.

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



Jak bylo uvedeno výše, nula se vyhodnocuje jako  a jakákoli nenulová hodnota se vyhodnocuje jako. Takže tato funkce je ekvivalentní jedné s použitím 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 ).



porovnání



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



#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 existuje na místní wiki.



Funkce se vyhodnotí jako, pokud stránka existuje, ať už obsahuje obsah, je viditelně prázdná (obsahuje metadata, jako jsou odkazy kategorií nebo , ale není viditelný obsah), je prázdný nebo je. Pouze stránky, které jsou přesměrovány, se vyhodnotí jako, včetně toho, zda stránka dříve existovala, ale byla odstraněna.



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



Pokud stránka zkontroluje cíl pomocí, pokud existuje, pak se tato stránka objeví v seznamu  pro cílovou stránku. Pokud tedy byl kód  zahrnut na této stránce v přímém přenosu, /Foo uvede.

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 s odkazy na interwiki.

pokud existují limity
je považován za "drahou 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 roztříděna 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 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 drahý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.

pokud existují a hledané stránky
Stránka, která neexistuje a je testována na použití #ifexist, skončí na Hledaných stránkách. Viz, kde se o tom píše a dokumentaci k šabloně w:Template:Linkless exists jak to lze obejít.

#rel2abs
Tato funkce převádí relativní cestu k souboru na absolutní dráhu souboru.



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


 * → aktuální úroveň
 * → jít o jednu úroveň výše
 * → přejděte 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 není povoleno více než dvě po sobě jdoucí úplné zastávky, lze takové sekvence použít k oddělení následných příkazů:



#switch
See also : w:Help:Switch parser function

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

Příklady:




 * 1) switch s tagy částečného převodu může ovlivnit konfigurační soubor, který umožňuje editoru neobeznámenému s kódováním šablony 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 se s ním zacházet jako s případovým porovnáním a pokud se neshodují žádné případy, nebude se zobrazovat žá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. To minimalizuje 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. Viz .)



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 vrátit. Pokud se hodnota parametru testu neshoduje s žádným 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 prosté znaménka rovná se. Chcete-li tento problém vyřešit, vytvořte šablonu = obsahující jediné znaménko rovná se:  nebo nahraďte znak 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 spínače mohla být komplikovaná / 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 je 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 digraph  interpretován 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í.



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ř.  ) č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 (viz oficiální dokumentace PHP pro podrobnosti o tom, jak se řetězec přetypuje na booleovské hodnoty).

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 je vždy interpretováno 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, spíše 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í matematcké 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:





Viz například 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.

Záporné hodnoty jsou akceptovány pro obě hodnoty. Záporné hodnoty pro počet segmentů k návratu parametru efektivně 'proužky' segmenty od konce řetězce. Záporné hodnoty pro první segment, který se vrátí, se překládají na "začínají počítáním tohoto segmentu 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 neplatné v názvech stránek.

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 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 kladný, určuje maximální délku vráceného řetězce od počátečního bodu.

Příklad: vrací.

#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 k formátování. (např. your_string_here ) Pokud například chcete z řetězce odstranit slovo „Category:“ bez ohledu na jeho případ, můžete zadat:
 * Nahrazení velkých a malých písmen:

Nevýhodou je však to, že výstup se stane malými písmeny. Pokud chcete zachovat obal i po výměně, musíte k dosažení stejné věci použít více úrovní vnoření (tj. Více náhradních volání).

#explode
Funkce #explode rozdělí daný řetězec na kousky a poté vrátí jeden z kusů. Syntaxe je:

Parametr delimiter určuje řetězec, který se použije k rozdělení string na kousky. Tento řetězec delimiter pak není součástí žádného kusu a když jsou dva řetězce delimiter vedle sebe, vytvoří mezi nimi prázdný kus. 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 v závěrečné části.

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


 * se vrací
 * se vrací
 * se vrací
 * se vrací

Vrácená hodnota je "pozice" - té části. Pokud je méně kusů, 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 sníží na O(n).

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 substituované předponou hash znaku :


 * → kód   bude vložen do wikitextu od stránky existuje.

Substituce nefunguje v rámci, pro tento účel můžete použít &hellip;.

Přesměrování
Zejména   (čas) by mohl být užitečný v  na stránky včetně dat, ale to nefunguje.

Únikové znaky svislítka v tabulkách
Funkce syntaktického analyzátoru budou spravovat syntaxe a znaky kanálu  a všechny surové znaky kanálu budou považovat za oddělovače parametrů. Aby se tomu zabránilo, většina wiki použila šablonu    :!, jejíž obsah byl pouze znakem raw pipe, protože MW 1.24 toto kludge nahradilo. Tím se „skryje“ svislítko (roura, trubka, svislá čára) z analyzátoru MediaWiki, což zajistí, že se neuvažuje, dokud nebudou rozbaleny všechny šablony a proměnné na stránce. Poté bude interpretován jako řádek tabulky nebo oddělovač sloupců. Alternativně lze použít syrovou tabulku HTML, i když je to méně intuitivní a náchylnější k chybám.

Můžete také uniknout znaku svislítka pro zobrazení jako prostý, neinterpretovaný znak pomocí entity HTML:.

Odstraňování mezer
Mezery, včetně nových řádků, karet a mezer, jsou od začátku a konce všech parametrů těchto funkcí analyzátoru odstraněny. Pokud to není žádoucí, lze porovnat řetězce po jejich vložení 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í &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 stlačuje více znaků mezery v jednom řádku do jednoho.




 * || → || 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ž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 za  (breakable space(křehký prostor)) nebo   (non-breakable space(nerozbitný prostor)), protože nejsou změněny softwarem:


 * →  foofoo 
 * → foofoo

Viz též

 * 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