Help:Extension:ParserFunctions/nl

De extensie zorgt voor elf extra parserfuncties naast de "", die er al waren op MediaWiki. (Het kan geconfigureerd worden om extra parserfuncties voor tekstbewerking te krijgen; deze functies zijn .) Al deze functies hebben de syntaxis:

#expr
Deze functie verwerkt een mathematische expressie en geeft een berekende waarde terug. Deze functie is ook beschikbaar in met de functie.



De beschikbare operatoren worden rechts genoemd, op volgorde van bewerking. De functie van elke operator. De nauwkeurigheid en het formaat van het resultaat zal per besturingssysteem (waar de wiki op draait) verschillen, dat is ook afhankelijk van het nummerformaat van de taal van de website.

Bij booleanse algebra wordt zero omgezet naar, elke andere waarde wordt  :



Een lege expressie geeft een lege tekst terug. Ongeldige expressies geven een of meerdere foutboodschappen die verwerkt kunnen worden met de functie  :



De volgorde van operanden is van belang. Een min of plus voor een getal kan als een negatief getal of een positief getal worden gezien, het is dan geen fout in de invoer:



NB: bij het gebruik van de uitvoer van magische woorden, moet er een formaataanpassing gedaan worden om komma's te verwijderen en de nummers te vertalen. geeft, waar we 0 willen hebben, wat kan worden verkregen met. Dit is vooral van belang bij talen waar getallen worden vertaald. In het Bengaals, wordt dan ৩০,০৬১.



Afronden
Rounds, het getal wordt links afgerond op een veelvoud van 1/10 verhoogd tot een macht, waarbij de exponent gelijk is aan de afgekapte waarde van het getal rechts.

Om naar boven of naar beneden af te ronden, gebruikt u respectievelijk unaire  of.

Teksten
Expressies werken alleen met getalachtige waarden, ze kunnen geen tekenreeksen of tekens vergelijken. kan in plaats daarvan worden gebruikt.



#if
Deze functie evalueert een testreeks en bepaalt of deze leeg is of niet. Een testreeks die alleen witruimte bevat, wordt als leeg beschouwd.





Deze functie test eerst of de eerste parameter niet leeg is. Als de eerste parameter niet leeg is, geeft de functie het tweede argument weer. Als de eerste parameter leeg is of alleen witruimtetekens bevat (spaties, nieuwe regels, enz.), wordt het derde argument weergegeven.



De testreeks wordt altijd geïnterpreteerd als pure tekst, dus wiskundige uitdrukkingen worden niet geëvalueerd (zie daarvoor #ifexpr):



De laatste parameter (false) mag worden weggelatenː



De functie kan genest zijn. Om dit te doen, nest de binnenste -functie in zijn volledige vorm in plaats van een parameter van de omsluitende  -functie. Er zijn maximaal zeven niveaus van nesting mogelijk, hoewel dat afhankelijk kan zijn van de wiki of een geheugenlimiet.

U kunt ook een parameter gebruiken als de testreeks in uw -afschrift. U moet ervoor zorgen dat u de  (pijpsymbool) achter de naam van de variabele toevoegt. (Zodat als de parameter geen waarde heeft, deze wordt geëvalueerd naar een lege tekenreeks in plaats van de tekenreeks " ".)



Bekijk voor meer voorbeelden van het gebruik van deze parserfunctie.

#ifeq
Deze parserfunctie vergelijkt twee invoerreeksen, bepaalt of ze identiek zijn en retourneert een van de twee tekenreeksen op basis van het resultaat. Als er meer vergelijkingen en uitvoerreeksen nodig zijn, kunt u overwegen  te gebruiken.



Als beide tekenreeksen geldige numerieke waarden zijn, worden de tekenreeksen numeriek vergeleken:



Anders wordt de vergelijking als tekst gemaakt; Deze vergelijking is hoofdlettergevoelig:


 * →  (vergelijk met vergelijkbaar voorbeeld hierboven, zonder de aanhalingstekens)
 * →  (vergelijk met vergelijkbaar voorbeeld hierboven, waarbij   eerst een geldig nummer retourneert)
 * →  (vergelijk met vergelijkbaar voorbeeld hierboven, zonder de aanhalingstekens)
 * →  (vergelijk met vergelijkbaar voorbeeld hierboven, waarbij   eerst een geldig nummer retourneert)

Neem als praktisch voorbeeld een bestaande   met behulp van de parser om te kiezen tussen twee standaardtijden, kort en lang. Het neemt de parameter als eerste invoer om te vergelijken met de tekenreeks "short" - er is geen conventie voor de volgorde, maar het is eenvoudiger te lezen als de parameter als eerste gaat. De sjablooncode wordt gedefinieerd als:



Het volgende volgt:


 * → 20
 * → 40
 * → 40

#iferror
Deze functie neemt een invoerreeks en retourneert een van de twee resultaten; de functie evalueert  of de invoerreeks een HTML-object met   bevat, zoals gegenereerd door andere parserfuncties zoals ,   en $rel 2abs, sjabloon fouten zoals loops en recursies, en andere "failsoft" parserfouten.



Een of beide retourreeksen kunnen worden weggelaten. Als de tekenreeks  wordt weggelaten, wordt de   geretourneerd als deze niet onjuist is. Als de tekenreeks  ook wordt weggelaten, wordt een lege tekenreeks geretourneerd bij een fout :


 * → &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
Deze functie evalueert een wiskundige expressie en retourneert een van de twee tekenreeksen, afhankelijk van de booleaanse waarde van het resultaat:



De invoer  wordt precies zo geëvalueerd als voor   hierboven, waarbij dezelfde operatoren beschikbaar zijn. De uitvoer wordt vervolgens geëvalueerd als een booleaanse expressie.

Een lege invoerexpressie evalueert naar :



Zoals hierboven vermeld, evalueert nul naar  en elke niet-nulwaarde evalueert naar , dus deze functie is gelijk aan één die alleen   en   gebruikt:



behalve voor een lege of verkeerde invoerexpressie (een foutmelding wordt behandeld als een lege tekenreeks; deze is niet gelijk aan nul, dus we krijgen ).



vergelijken



Een of beide retourwaarden kunnen worden weggelaten; Er wordt geen uitvoer gegeven wanneer de juiste tak leeg is:



Boolean operators of equality or inequality operators are supported.



#ifexist
Deze functie neemt een invoerreeks, interpreteert deze als een paginatitel en retourneert een van de twee waarden, afhankelijk van het feit of de pagina al dan niet op de lokale wiki bestaat.



De functie evalueert naar  als de pagina bestaat, of deze inhoud bevat, zichtbaar leeg is (metagegevens bevat zoals categoriekoppelingen of, maar geen zichtbare inhoud), leeg is of een  is. Alleen pagina's met een rode link worden beoordeeld op, ook als de pagina bestond maar is verwijderd.



De functie evalueert naar  voor  die zijn aangepast en voor  die door de software zijn gedefinieerd.



Als een pagina een doel controleert met, wordt die pagina weergegeven in de -lijst voor de doelpagina. Dus als de code  op deze pagina is opgenomen, zal /Foo  vermelden.

Op wiki's die een gedeelde repository voor de media gebruiken, kan  worden gebruikt om te controleren of een bestand is geüpload naar de repository, maar niet naar de wiki zelf:



Als er een lokale beschrijvingspagina voor het bestand is gemaakt, is het resultaat bestaat voor al het bovenstaande.

werkt niet met interwikilinks.



ifexist limieten
wordt beschouwd als een "dure parserfunctie"; Slechts een beperkt aantal daarvan kan op één pagina worden opgenomen (inclusief functies in transclude sjablonen). Als deze limiet wordt overschreden, retourneren alle daaropvolgende -functies automatisch false, ongeacht of de doelpagina bestaat of niet, en wordt de pagina gecategoriseerd in Category:. De naam van de kan variëren afhankelijk van de taal van uw wiki.

Voor sommige testgevallen is het mogelijk om het ifexist effect te emuleren met css, door gebruik te maken van de selectors a.new (om links naar niet-bestaande pagina's te selecteren) of a:not(.new) (om links naar bestaande pagina's te selecteren). Bovendien, aangezien het aantal dure parserfuncties dat op een enkele pagina kan worden gebruikt, wordt beheerd door, kan men ook de limiet in LocalSettings verhogen.php.



ifexist en gewenste pagina's
Een pagina die niet bestaat en is getest op het gebruik van #ifexist, komt terecht op de Gewenste pagina's. Zie voor de reden, en een tijdelijke oplossing.

#rel2abs
Deze functie converteert een relatief bestandspad naar een absoluut bestandspad.



Binnen de -invoer is de volgende syntaxis geldig:


 * → het huidige niveau
 * → ga een niveau hoger
 * → ga een niveau lager naar de submap /foo

Als de  niet is opgegeven, wordt in plaats daarvan de volledige paginanaam van de pagina gebruikt:



Ongeldige syntaxis, zoals  of , wordt genegeerd. Aangezien er niet meer dan twee opeenvolgende volledige stops zijn toegestaan, kunnen reeksen zoals deze worden gebruikt om opeenvolgende instructies te scheiden:



Voor een vergelijkbare groep functies zie ook Bij de Magische woorden de URL-gegevens. Interne parserfuncties bevatten: 'localurl:', 'fullurl:', 'anchorencode:' enz.

#switch
Zie ook: w:Help:Switch parser function

Deze functie vergelijkt één invoerwaarde met verschillende testgevallen en retourneert een gekoppelde tekenreeks als er een overeenkomst wordt gevonden.

Voorbeelden:




 * 1) switch met gedeeltelijke transclusie-tags kan van invloed zijn op een configuratiebestand waarmee een editor die niet bekend is met sjablooncodering configureerbare elementen kan bekijken en bewerken.

Standaardwaarde
Het  wordt geretourneerd als er geen   tekenreeks overeenkomt met de  :



In deze syntaxis moet het standaardresultaat de laatste parameter zijn en mag het geen onbewerkt gelijkteken bevatten (een gelijkteken zonder ). Als dit wel het geval is, wordt het behandeld als een vergelijking en wordt er geen tekst weergegeven als er geen gevallen overeenkomen. Dat komt omdat de standaardwaarde niet is gedefinieerd (leeg is). Als er een case echter overeenkomt, wordt de bijbehorende tekenreeks geretourneerd.



Als alternatief kan het standaardresultaat expliciet worden aangegeven met een  string van " ".

Standaardresultaten die op deze manier zijn gedeclareerd, kunnen overal in de functie worden geplaatst:



Als de parameter  wordt weggelaten en er geen overeenkomst wordt gemaakt, wordt er geen   geretourneerd:





Resultaten groeperen
Het is mogelijk om 'doorval'-waarden te hebben, waarbij meerdere  tekenreeksen dezelfde   tekenreeks retourneren. Dit minimaliseert dubbel werk.

Hier wordt bij 2, 3 en 4 allemaal  terug; Bij 6 en 7 is het resultaat. De " " in de laatste parameter kan in het bovenstaande geval worden weggelaten.



Met gebruik van parameters
De functie kan worden gebruikt met parameters als testreeks. In dit geval is het niet nodig om de 'pipe' achter de parameternaam te plaatsen, omdat het zeer onwaarschijnlijk is dat u ervoor kiest om iets in te stellen voor de tekenreeks " ". (Dit is de waarde die de parameter standaard heeft als de 'pipe' afwezig is en de parameter niet bestaat of een waarde heeft. Zie .)



In het bovenstaande geval, als  gelijk is aan , retourneert de functie. Als het gelijk is aan, retourneert de functie. Als de parameter leeg is of niet bestaat, retourneert de functie.

Net als in het bovenstaande gedeelte kunnen gevallen worden gecombineerd om één resultaat te geven.



Hier, als  gelijk is aan ,   of  , retourneert de functie. Als het gelijk is aan, retourneert de functie. Als de parameter leeg is of niet bestaat, retourneert de functie.

Bovendien kan het standaardresultaat worden weggelaten als u niets wilt retourneren als de waarde van de testparameter niet overeenkomt met een van de gevallen.



In dit geval retourneert de functie een lege tekenreeks, tenzij  bestaat en gelijk is aan   of , in welk geval het respectievelijk   of   retourneert.

Dit heeft hetzelfde effect als het standaardresultaat als leeg verklaren.



Als u om de een of andere reden besluit een case in te stellen als " ", retourneert de functie het resultaat van die case wanneer de parameter niet bestaat of geen waarde heeft. De parameter moet bestaan en een andere waarde hebben dan de tekenreeks " " om het standaardresultaat van de functie te retourneren.


 * (wanneer  niet bestaat of leeg is):
 * →  Foo 
 * (wanneer  de waarde "  →  Bar 
 * (wanneer  de waarde " " heeft):
 * →  Foo 

In dit hypothetische geval zou u de 'pipe' aan de parameter moeten toevoegen.



Vergelijking gedrag
Net als bij  wordt de vergelijking numeriek gemaakt als zowel de vergelijkingsreeks als de string die wordt getest numeriek zijn; of als een hoofdlettergevoelige tekenreeks:





Een  string kan leeg zijn:



Zodra een match is gevonden, worden volgende  genegeerd:





Ruwe gelijktekens
"Case"-tekenreeksen mogen geen onbewerkte gelijktekenstekens bevatten. Om dit te omzeilen, gebruikt u het magische woord =, u maakt een sjabloon = met een enkel gelijkteken:, of vervangt u het gelijkteken door HTML-code.

Voorbeeld:



#ifeq vervangen
kan worden gebruikt om de expansiediepte te beperken.

Bijvoorbeeld:



is gelijk aan



d.w.z. diep nestelen, lineair:

Aan de andere kant kan de vervanging van de schakelaar ingewikkeld / onpraktisch zijn voor IF's die in beide takken zijn genest (weergegeven met alternatieven voor inspringing, aan beide zijden ingesprongen), waardoor een volledige symmetrische boom ontstaat:

#time
Deze parserfunctie neemt een datum en/of tijd (in de Gregoriaanse kalender) en maakt deze op volgens de gegeven syntaxis. Er kan een datum/tijd-object worden opgegeven; de standaardwaarde is de waarde van het  magische woord, dat wil zeggen het tijdstip waarop de pagina voor het laatst in HTML is weergegeven.



De lijst met geaccepteerde opmaakcodes wordt gegeven in de tabel aan de rechterkant. Elk teken in de opmaaktekenreeks dat niet wordt herkend, wordt ongewijzigd doorgegeven. Dit geldt ook voor lege ruimtes (het systeem heeft ze niet nodig voor het interpreteren van de codes). Er zijn ook twee manieren om te ontsnappen aan tekens in de opmaakreeks:


 * 1) Een backslash gevolgd door een opmaakteken wordt geïnterpreteerd als één letterlijk teken
 * 2) Tekens tussen dubbele aanhalingstekens worden beschouwd als letterlijke tekens en de aanhalingstekens worden verwijderd.

Bovendien worden de twee tekens  geïnterpreteerd als een enkele letterlijke "x".

Naarmate de lijst met opmaakcodes blijft evolueren (met de ondersteuning van nieuwe kalenders of van nieuwe datumvelden die anders zijn berekend en opgemaakt), moet u zorgen dat alle letterlijke tekens (niet alleen ASCII-letters die momenteel worden gebruikt door opmaakcodes) ongewijzigd worden doorgegeven als het dus niet als opmaak bedoeld is.

Helaas wordt het enkele citaat van ASCII voorlopig nog steeds niet herkend als een eenvoudig alternatief voor het markeren van letterlijke tekst voor de momenteel ondersteunde dubbele ASCII-aanhalingstekens (dubbele aanhalingstekens zijn bijvoorbeeld verplicht voor andere toepassingen, zoals de afbakening van tekenreekswaarden in JSON, C, C ++...) en backslashes (die ook moeten worden ontsnapt in tekenreeksconstanten die door veel talen worden gebruikt, waaronder JSON, C, C++, PHP, JavaScript, Lua). U kunt dus nog steeds geen letterlijk dubbel citaat insluiten zonder het te markeren met een backslash (of u kunt in plaats daarvan andere krullende, hoekige of vierkante aanhalingstekens gebruiken).



Het  kan in elk formaat zijn dat door PHP's strtotime functie wordt geaccepteerd. Absolute (bijv. ), relatieve (bijv.  ) en gecombineerde tijden (bijv.  ) worden geaccepteerd.


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

De  in ISO 639-3 (?) maakt het mogelijk om de string in de gekozen taal weer te geven



De parameter  geeft aan of het date/time object verwijst naar de lokale tijdzone of naar UTC.

Dit is een booleaanse parameter: de waarde ervan wordt bepaald door de waarde van het argument te casten (zie de officiële PHP-documentatie voor details over hoe tekenreeksen worden gegoten naar booleaanse waarden).

Zie de volgende voorbeelden voor meer informatie:





Als u een Unix-tijdstempel hebt berekend, kunt u deze gebruiken in datumberekeningen door er een symbool  voor te zetten.



Er kunnen volledige of gedeeltelijke absolute data worden opgegeven; De functie zal delen van de datum "invullen" die niet zijn opgegeven met behulp van de huidige waarden:



Een viercijferig getal wordt altijd geïnterpreteerd als een jaar, nooit als uren en minuten: Vóór in 2011 was dit niet het geval.



Een getal van zes cijfers wordt geïnterpreteerd als uren, minuten en seconden indien mogelijk, maar verder als een fout (bijvoorbeeld niet als een jaar en maand):


 * →  Invoer wordt behandeld als een tijd in plaats van een code voor een jaar + maand.
 * →  Hoewel 19:60:09 geen geldige tijd is, wordt 196009 niet geïnterpreteerd als september 1960.

De functie voert een bepaalde hoeveelheid datumwiskunde uit:



De totale lengte van de opmaakreeksen van de aanroepen van  is beperkt tot 6000 tekens



Tijdzone probleem
Er is een bug in deze #time parserfunctie (meer specifiek in PHP DateTime) die het doorgeven van niet-gehele getallen als relatieve tijdzone-verschuivingen niet toestaat. Dit probleem is niet van toepassing bij het gebruik van een tijdzone op het uur, zoals EDT. Bijvoorbeeld:


 * &rarr;

India bevindt zich echter op een tijdverschuiving van +5,5 uur ten opzichte van UTC en dus zal het gebruik van zijn tijdzone normaal gesproken niet de juiste berekening van een relatieve tijdzone-offset mogelijk maken. Dit is wat er gebeurt:


 * &rarr;

U kunt dit probleem omzeilen door de tijd als volgt om te zetten in minuten of seconden:


 * &rarr;
 * &rarr;

(Tim Starling, de ontwikkelaar van deze functie, leverde de exacte syntaxis voor deze oplossing.)

#timel
Deze functie is identiek aan, wanneer de parameter   is ingesteld op  , dus het gebruikt altijd de lokale tijd van de wiki (zoals ingesteld in ).

Syntaxis van de functie:





Zie daarvan de volgende voorbeeldenː





#titleparts
Deze functie scheidt een paginatitel in segmenten op basis van schuine strepen en retourneert vervolgens enkele van die segmenten als uitvoer.



Als de parameter aantal te retourneren segmenten niet is opgegeven, wordt standaard "0" ingesteld, waarmee alle segmenten van het eerste segment dat moet worden geretourneerd (inbegrepen) worden geretourneerd. Als de parameter eerste te retourneren segment niet is opgegeven of "0" is, wordt standaard "1" gebruikt:


 * →  See also.
 * →  See also.

Voor beide waarden worden negatieve waarden geaccepteerd. Negatieve waarden voor de parameter aantal te retourneren segmenten 'stript' effectief segmenten van het einde van de tekenreeks. Negatieve waarden voor het eerste te retourneren segment vertaalt zich naar 'begin rechts te tellen':


 * →  Hiermee stript u één segment van het uiteinde van de tekenreeks. Zie ook.
 * →   Stript alle 4 segmenten van het einde van de string
 * →   Stript 5 segmenten van het einde van de string (meer dan er zijn)
 * →   Retourneert het laatste segment. Zie ook.
 * →   Stript één segment van het einde van de tekenreeks, retourneert vervolgens het tweede segment en verder
 * →   Begin met kopiëren bij het voorlaatste element; strip één segment van het einde van de string

Voor de verwerking is de parameter pagename HTML-gedecodeerd: als deze enkele standaard HTML-tekenentiteiten bevat, worden deze geconverteerd naar gewone tekens (intern gecodeerd met UTF-8, d.w.z. dezelfde codering als in de MediaWiki-bronpagina met behulp van deze parserfunctie).


 * Bijvoorbeeld, elke vermelding van,   of   in paginanaam wordt vervangen door.
 * Er wordt geen andere conversie van HTML naar platte tekst uitgevoerd, dus HTML-tags worden intact gelaten bij deze eerste stap, zelfs als ze ongeldig zijn in paginatitels.

Vervolgens wordt de gedecodeerde pagename zoveel mogelijk gecanoniseerd tot een standaard paginatitel die door MediaWiki wordt ondersteund:


 * 1) Alle underscores worden automatisch vervangen door spaties:
 * →  Niet bah_boo, ondanks de underscore in het origineel.
 * 1) De string wordt maximaal 25 keer gesplitst; Verdere schuine strepen worden genegeerd en het 25e element bevat de rest van de tekenreeks. De tekenreeks is ook beperkt tot 255 tekens, omdat deze wordt behandeld als een paginatitel:
 * Als u om welke reden dan ook deze functie tot het uiterste moest pushen, hoewel zeer onwaarschijnlijk, is het mogelijk om de limiet van 25 splitsingen te omzeilen door functie-aanroepen te nesten:
 * 1) Ten slotte wordt de eerste subtekenreeks met een hoofdletter geschreven volgens de hoofdletterinstellingen van de lokale wiki (als die subtekenreeks ook begint met de naam van een lokale namespace, wordt die naam ook genormaliseerd).
 * 1) Ten slotte wordt de eerste subtekenreeks met een hoofdletter geschreven volgens de hoofdletterinstellingen van de lokale wiki (als die subtekenreeks ook begint met de naam van een lokale namespace, wordt die naam ook genormaliseerd).
 * 1) Ten slotte wordt de eerste subtekenreeks met een hoofdletter geschreven volgens de hoofdletterinstellingen van de lokale wiki (als die subtekenreeks ook begint met de naam van een lokale namespace, wordt die naam ook genormaliseerd).

{{Warning|1= Bepaalde tekens die illegaal zijn in een paginatitel, zorgen ervoor dat #titleparts de tekenreeks niet goed verwerkt:


 * → {{#titleparts: {one/two} | 1 | 1 }}. Levert niet het verwachte: {one
 * → {{#titleparts: page/123 | 1 | 2 }}. Werkt niet omdat haakjes illegaal zijn in paginatitels en deze parserfunctie verwerkt geen koppelingen die zijn ingesloten in de invoerparameter paginanaam, zelfs niet wanneer ze de MediaWiki-syntaxis of andere HTML- of MediaWiki-tags gebruiken.
 * → "{{#titleparts: red/#00FF00/blue| 1 | 3 }}". Werkt niet omdat "#" ook illegaal is in paginatitels.

}}

Tekenreeksfuncties
Al deze functies zijn geïntegreerd van de extensie StringFunctions, maar zijn alleen beschikbaar als een beheerder   instelt op.

Al deze functies werken in O(n) tijdscomplexiteit, waardoor ze veilig zijn tegen DoS aanvallen.

#len
De functie #len retourneert de lengte van de gegeven tekenreeks. De syntaxis:

De retourwaarde is altijd een aantal tekens in de bron string (na uitbreidingen van sjabloonaanroepen, maar vóór conversie naar HTML). Als er geen tekenreeks is opgegeven, is de retourwaarde nul.

#pos
De functie #pos retourneert de positie van een bepaalde zoekterm binnen de tekenreeks. De syntaxis:

De parameter offset, indien opgegeven, geeft de beginpositie aan waar deze functie moet beginnen met zoeken.

Als de zoekterm wordt gevonden, is de retourwaarde een op nul gebaseerd geheel getal van de eerste positie binnen de string.

Als de zoekterm niet wordt gevonden, retourneert de functie een lege tekenreeks.

#rpos
De functie #rpos retourneert de laatste positie van een bepaalde zoekterm binnen de tekenreeks. De syntaxis:

Als de zoekterm wordt gevonden, is de retourwaarde een op nul gebaseerd geheel getal van de laatste positie binnen de string.

Als de zoekterm niet wordt gevonden, retourneert de functie -1.

#sub
De functie #sub retourneert een substring van de gegeven tekenreeks. De syntaxis:

De parameter start, indien positief (of nul), geeft een op nul gebaseerde index op van het eerste teken dat moet worden geretourneerd.

Voorbeeld: retourneert.

retourneert.

Als de parameter start negatief is, geeft deze aan hoeveel tekens van het einde moeten worden geretourneerd.

Voorbeeld: retourneert.

De parameter length, indien aanwezig en positief, geeft de maximale lengte van de geretourneerde tekenreeks aan.

Voorbeeld: retourneert.

Als de parameter length negatief is, geeft deze aan hoeveel tekens worden weggelaten aan het einde van de tekenreeks.

Voorbeeld: retourneert.

Als de parameter start negatief is, geeft deze aan hoeveel tekens van het einde moeten worden geretourneerd. De parameter length, indien aanwezig en positief, geeft de maximale lengte van de geretourneerde tekenreeks van het startpunt aan.

Voorbeeld: retourneert.

#count
De functie #count retourneert het aantal keren dat een bepaalde subtekenreeks in de opgegeven tekst voorkomt.

#replace
De #replace-functie retourneert de gegeven tekenreeks waarbij alle gevallen van een zoekterm worden vervangen door een vervangende term.

Als de search term niet gespecificeerd of leeg is, wordt er naar een enkele spatie gezocht.

Als de replacement term niet gespecificeerd of leeg is, worden alle voorkomens van search term uit de string verwijderd.

De syntaxis heeft nu geen optie om de instelling voor hoofdlettergevoeligheid in te schakelen. Maar u kunt magische woorden voor opmaak gebruiken als tijdelijke oplossing. (bijv. ) Als u bijvoorbeeld het woord 'Category:' uit de tekenreeks wilt verwijderen, ongeacht het hoofdlettergebruik, kunt u het volgende typen:
 * Hoofdletterongevoelig vervangen:

Maar het nadeel is dat de uitvoer allemaal kleine letters wordt. Als u de hoofdletters na vervanging wilt behouden, moet u meerdere nestniveaus gebruiken (d.w.z. meerdere vervangingsoproepen) om hetzelfde te bereiken.

#explode
De functie #explode splitst de gegeven string in stukken en retourneert vervolgens een van de stukken. De syntaxis:

De parameter delimiter geeft een tekenreeks aan die moet worden gebruikt om de string in stukken te verdelen. Deze delimiter string maakt dan geen deel uit van een stuk, en wanneer twee delimiter strings naast elkaar staan, creëren ze een leeg stuk ertussen. Als deze parameter niet is opgegeven, wordt als waarde één spatie gebruikt. De parameter limit is alleen beschikbaar in ParserFunctions, niet in de zelfstandige StringFunctions-versie, en stelt u in staat om het aantal geretourneerde onderdelen te beperken, waarbij alle resterende tekst in het laatste deel is opgenomen.

De parameter position geeft aan welk stuk moet worden geretourneerd. Stukken worden geteld vanaf 0. Als deze parameter niet is opgegeven, wordt het eerste stuk gebruikt (stuk met nummer 0). Wanneer een negatieve waarde wordt gebruikt als position, worden de stukken vanaf het einde geteld. In dit geval betekent stuk nummer -1 het laatste stuk. Voorbeelden:


 * retourneert.
 * retourneert.
 * retourneert.
 * retourneert

De retourwaarde is het stuk position. Als er minder stukken zijn dan de position aangeeft, wordt er een lege string geretourneerd.

#urldecode
converteert de escape-tekens van een ' RL gecodeerd' string terug naar leesbare tekst. De syntaxis is:

Opmerkingen:
 * Deze functie werkt door de urldecode-functie van PHP direct bloot te leggen.
 * Een karakter-code-referentie is te vinden bij www.w3schools.com.
 * Het tegenovergestelde,, is geïntegreerd in MediaWiki vanaf versie 1.18; Zie voor voorbeelden.
 * urldecode werd samengevoegd van Stringfunctions in 2010, door commit 1b75afd18d3695bdb6ffbfccd0e4aec064785363

Limieten
Deze module definieert drie algemene instellingen:


 * $wgStringFunctionsLimitSearch
 * $wgStringFunctionsLimitReplace
 * $wgStringFunctionsLimitPad

Deze worden gebruikt om sommige parameters van sommige functies te beperken om ervoor te zorgen dat de functies werken in O(n) tijdcomplexiteit, en zijn daarom veilig tegen DoS aanvallen.

$wgStringFunctionsLimitSearch
Deze instelling wordt gebruikt door #pos, #rpos, #replace en #explode. Al deze functies zoeken naar een substring in een grotere string terwijl ze werken, die in O(n*m) kan draaien en daardoor de software kwetsbaarder maakt voor DoS aanvallen. Door deze waarde in te stellen op een specifiek klein getal, wordt de tijdscomplexiteit teruggebracht tot O(n).

Deze instelling beperkt de maximaal toegestane lengte van de tekenreeks waarnaar wordt gezocht.

De standaardwaarde is 30 multibyte tekens.

$wgStringFunctionsLimitReplace
Deze instelling wordt gebruikt door #replace. Deze functie vervangt alle voorvallen van de ene string voor een andere, die kan worden gebruikt om snel zeer grote hoeveelheden gegevens te genereren, en maakt de software daarom kwetsbaarder voor DoS aanvallen. Met deze instelling wordt de maximaal toegestane lengte van de vervangende tekenreeks beperkt.

De standaardwaarde is 30 multibyte tekens.



Vervanging
Parserfuncties kunnen vervangen worden door het hash-teken vooraf te voegen met :


 * → de code   wordt ingevoegd in de wikitekst aangezien de pagina bestaat.

Substitutie werkt niet binnen ; U kunt hiervoor &hellip;  gebruiken.

Doorverwijzingen
Vooral   zou handig kunnen zijn bij  naar pagina's inclusief datums, maar dit werkt niet.



pipe-tekens gebruiken in tabellen
Parserfuncties vernielen de syntaxis en pipe-tekens, waarbij alle onbewerkte pipe-tekens als parameterscheiders worden behandeld. Om dit te voorkomen, gebruikten de meeste wiki's een sjabloon    :! met als inhoud alleen een onbewerkt pijpteken, aangezien MW 1.24 een  deze lelijke oplossing verving. Dit 'verbergt' de pipe voor de MediaWiki-parser, waardoor deze pas wordt overwogen nadat alle sjablonen en variabelen op een pagina zijn uitgebreid. Het wordt dan geïnterpreteerd als een tabelrij of kolomscheidingsteken. Als alternatief kan onbewerkte HTML-tabelsyntaxis worden gebruikt, hoewel dit minder intuïtief en foutgevoeliger is.

U kunt het pipe-teken onderdrukken bij weergave als een gewoon, niet-geïnterpreteerd teken met behulp van een HTML-entiteit:.



Witruimte verwijderen
Whitespace, including newlines, tabs, and spaces, is stripped from the beginning and end of all the parameters of these parser functions. If this is not desirable, comparison of strings can be done after putting them in quotation marks.



To prevent the trimming of then and else parts, see m:Template:If. Some people achieve this by using &lt; &gt;  &lt; /nowiki &gt; instead of spaces.


 * → foofoo
 * → foofoo

However, this method can be used to render a single whitespace character only, since the parser squeezes multiple whitespace characters in a row into one.




 * || → || foofoo 
 * }

In this example, the  style is used to force the whitespace to be preserved by the browser, but even with it the spaces are not shown. This happens because the spaces are stripped by the software, before being sent to the browser.

Het is mogelijk om dit gedrag te omzeilen door witruimtes te vervangen door  (breakable space) or   (non-breakable space), omdat ze niet door de software worden gewijzigd:


 * →  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



Zie ook

 * Help calculatie
 * Help nieuwe regels en spaties
 * Help vergelijking tussen ParserFunctions en Tex syntaxis
 * , an (incomplete) list of parser functions added by core and extensions.
 * Module:String maakt verouderd
 * Parser functions for Wikibase (the extensions that enables Wikidata): d:Special:MyLanguage/Wikidata:How to use data on Wikimedia projects
 * Module:String maakt verouderd
 * 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