Help:解析器函数:修订间差异

帮助页面
添加的内容 删除的内容
→‎#time:​ // Edit via Wikiplus
无编辑摘要
 

(未显示同一用户的4个中间版本)

第487行: 第487行:
在本例中,不必将管道符放在参数名称后面,因为你不太可能需要选择字符串“<code><nowiki>{{{</nowiki>''parameter name''<nowiki>}}}</nowiki></code>”作为样例。
在本例中,不必将管道符放在参数名称后面,因为你不太可能需要选择字符串“<code><nowiki>{{{</nowiki>''parameter name''<nowiki>}}}</nowiki></code>”作为样例。
((如果没有管道符,且参数不存在或没有值,则参数就会显示为这样。)
((如果没有管道符,且参数不存在或没有值,则参数就会显示为这样。)
参见{{ll|Help:Parser functions in templates}}。)
参见[[mw:Help:Parser functions in templates|Help:Parser functions in templates]]。)


:<syntaxhighlight lang="moin" inline>{{#switch: {{{1}}} | foo = Foo | baz = Baz | Bar }}</syntaxhighlight>
:<syntaxhighlight lang="moin" inline>{{#switch: {{{1}}} | foo = Foo | baz = Baz | Bar }}</syntaxhighlight>
第629行: 第629行:
{{Anchor|time|TIME}}
{{Anchor|time|TIME}}
== #time ==
== #time ==
{| class="wikitable plainlinks" style="float: right; font-size: 90%; line-height: normal; margin-{{dir|{{pagelang}}|right|left}}: 1em; width: 40%;"
{| class="wikitable plainlinks" style="float: right; font-size: 90%; line-height: normal; margin-{{dir|{{pagelang}}|right|left}}: 1em; "
|-
|-
! 代码
! 代码
第790行: 第790行:
|-
|-
| style="text-align: center;" | <code>r</code>
| style="text-align: center;" | <code>r</code>
| [[rfc5322|RFC 5332]]规范化的日期。与<syntaxhighlight lang="moin" inline>D, j M Y H:i:s +0000</syntaxhighlight>等价,但周名和月名可能不是国际化表述。
| [[rfc:5322|RFC 5332]]规范化的日期。与<syntaxhighlight lang="moin" inline>D, j M Y H:i:s +0000</syntaxhighlight>等价,但周名和月名可能不是国际化表述。
| style="font-size: 75%;" | {{#time:r}}
| style="font-size: 75%;" | {{#time:r}}
|-
|-
第1,202行: 第1,202行:
== 字符串函数 ==
== 字符串函数 ==


所有这些函数(<code>len</code>, <code>pos</code>, <code>rpos</code>, <code>sub</code>, <code>replace</code>, <code>explode</code>)都[[Special:Code/MediaWiki/50997|融合]]在了StringFunctions扩展中,但是只有在管理员在<code>LocalSettings.php</code>中启用了<syntaxhighlight lang=php inline>$wgPFEnableStringFunctions = true;</syntaxhighlight>的情况下才能使用。
所有这些函数(<code>len</code>, <code>pos</code>, <code>rpos</code>, <code>sub</code>, <code>replace</code>, <code>explode</code>)都[[mw:Special:Code/MediaWiki/50997|融合]]在了StringFunctions扩展中,但是只有在管理员在<code>LocalSettings.php</code>中启用了<syntaxhighlight lang=php inline>$wgPFEnableStringFunctions = true;</syntaxhighlight>的情况下才能使用。


所有这些函数都以[[大O符号|O(n)]]的时间复杂度运行,使其能够抵御[[DoS|DoS]]攻击。
所有这些函数都以[[大O符号|O(n)]]的时间复杂度运行,使其能够抵御[[DoS|DoS]]攻击。
第1,357行: 第1,357行:
** 注意在替换词中'''''这是唯一可以使用nowiki的地方'''''',因为其他的nowiki都会被用来绕过[[#$wgStringFunctionsLimitReplace|$wgStringFunctionsLimitReplace]],将任意大量的字符串注入到输出中。 因此,在替换词中所有出现{{tag|nowiki|open}}或其他标签扩展的地方都会替换为空格。
** 注意在替换词中'''''这是唯一可以使用nowiki的地方'''''',因为其他的nowiki都会被用来绕过[[#$wgStringFunctionsLimitReplace|$wgStringFunctionsLimitReplace]],将任意大量的字符串注入到输出中。 因此,在替换词中所有出现{{tag|nowiki|open}}或其他标签扩展的地方都会替换为空格。
* 此函数可安全处理UTF-8多字节字符。 例如: <code><nowiki>{{#replace:Žmržlina|ž|z}}</nowiki></code>返回<code>Žmrzlina</code>。
* 此函数可安全处理UTF-8多字节字符。 例如: <code><nowiki>{{#replace:Žmržlina|ž|z}}</nowiki></code>返回<code>Žmrzlina</code>。
* 如果单个文本字符串中的多个项都要替换,可以考虑{{ll|Extension:ReplaceSet}}。 该扩展会添加一个空余替换序列的解析器函数。
* 如果单个文本字符串中的多个项都要替换,可以考虑[[mw:Extension:ReplaceSet|Extension:ReplaceSet]]。 该扩展会添加一个空余替换序列的解析器函数。
}}
}}


第1,428行: 第1,428行:
这些用于限制一些函数的部分参数以确保函数在O(n)时间复杂度内运行,因此可避免[[Dos|Dos]]攻击,确保安全。
这些用于限制一些函数的部分参数以确保函数在O(n)时间复杂度内运行,因此可避免[[Dos|Dos]]攻击,确保安全。


==== $wgStringFunctionsLimitSearch ====
==== $wgString<wbr>FunctionsLimitSearch ====


[[##pos|#pos]]、[[##rpos|#rpos]]、[[##replace|#replace]]、[[##explode|#explode]]都使用了此设置。所有这些函数在运行时都会在更大的字符串中搜索子字符串,这可以在O(n*m)内运行,因此使软件更容易受到[[DoS|DoS]]攻击。将此值设置为特定的更小的数,可将时间复杂度降低到O(n)。
[[##pos|#pos]]、[[##rpos|#rpos]]、[[##replace|#replace]]、[[##explode|#explode]]都使用了此设置。所有这些函数在运行时都会在更大的字符串中搜索子字符串,这可以在O(n*m)内运行,因此使软件更容易受到[[DoS|DoS]]攻击。将此值设置为特定的更小的数,可将时间复杂度降低到O(n)。
第1,443行: 第1,443行:


<span id="General_points"></span>
<span id="General_points"></span>

== 一般帮助 ==
== 一般帮助 ==