更改

跳转至: 导航搜索

帮助:解析器函数的使用帮助

添加32,938字节, 2017年1月18日 (三) 15:52
创建页面,内容为“{{帮助导航}} '''解析器函数'''与系统变量非常相似,但与后者相比,前者'''全部'''要求'''至少传入'''一个参数,所有的参数1与...”
{{帮助导航}}
'''解析器函数'''与系统变量非常相似,但与后者相比,前者'''全部'''要求'''至少传入'''一个参数,所有的参数1与函数名之间均用<code>:</code>而不是<code>|</code>分割。

解析器函数有时会在函数名前加上<code><nowiki>#</nowiki></code>用以与模板区分。

== 列表 ==

以下表格详细说明了可用的解析器函数,部分术语未作解释。
{{#Widget:Heading}}
{| class="wikitable" style="width: 100%;"
|-
! 解析器函数
! 输入 → 输出
! 描述
|-
! colspan="3" style="background-color: #DDDDDD;" class="heading" | URL与标题的数据和解析
|-
| <code><nowiki>{{localurl:页面名称}}</nowiki></code><br /><code><nowiki>{{localurl:页面名称|查询字符串}}</nowiki></code>
| <code><nowiki>{{localurl:Mainpage}}</nowiki></code> → {{localurl:Mainpage}}<br /><code><nowiki>{{localurl:Mainpage|printable=yes}}</nowiki></code> → {{localurl:Mainpage|printable=yes}}
| 指定页面的相对路径
|-
| <code><nowiki>{{fullurl:页面名称}}</nowiki></code><br /><code><nowiki>{{fullurl:页面名称|查询字符串}}</nowiki></code><br /><code><nowiki>{{fullurl:跨wiki前缀:远程页面名称|查询字符串}}</nowiki></code>
| <code><nowiki>{{fullurl:Category:帮助}}</nowiki></code> → {{fullurl:Category:帮助}}<br /><code><nowiki>{{fullurl:Category:帮助|action=edit}}</nowiki></code> → {{fullurl:Category:帮助|action=edit}}<br /><code><nowiki>{{fullurl:mw:MediaWiki/zh|action=edit}}</nowiki></code> → {{fullurl:mw:MediaWiki/zh|action=edit}}<br /><code><nowiki>{{fullurl:mw:Help:Magic words|action=edit}}</nowiki></code> → {{fullurl:mw:Help:Magic words|action=edit}}
| 指定页面的相对协议路径,该解析器函数也能识别跨wiki前缀。<br />注意:未被方括号包裹起来的相对协议路径不会自动生成为链接
|-
| <code><nowiki>{{canonicalurl:页面名称}}</nowiki></code><br /><code><nowiki>{{canonicalurl:页面名称|查询字符串}}</nowiki></code><br /><code><nowiki>{{canonicalurl:interwiki:远程页面名称|查询字符串}}</nowiki></code>
| <code><nowiki>{{canonicalurl:Category:帮助}}</nowiki></code> → {{canonicalurl:Category:帮助}}<br /><code><nowiki>{{canonicalurl:Category:帮助|action=edit}}</nowiki></code> → {{canonicalurl:Category:帮助|action=edit}}<br /><code><nowiki>{{canonicalurl:mw:Help:Magic words|action=edit}}</nowiki></code> → {{canonicalurl:mw:Help:Magic words|action=edit}}
| 指定页面的绝对协议路径,该解析器函数也能识别跨wiki前缀。
|-
| <code><nowiki>{{filepath:文件名称}}</nowiki></code><br /><code><nowiki>{{filepath:文件名称|nowiki}}</nowiki></code><br /><code><nowiki>{{filepath:文件名称|缩略图大小}}</nowiki></code>
| <code><nowiki>{{filepath:Box-1.png}}</nowiki></code> → {{filepath:Box-1.png}}<br /><code><nowiki>{{filepath:Box-1.png|120}}</nowiki></code> → {{filepath:Box-1.png|120}}<br /><code><nowiki>{{filepath:Box-1.png|nowiki}}</nowiki></code> → {{filepath:Box-1.png|nowiki}}
| 指定文件的绝对协议路径,可以指定缩略图大小(仅能指定宽度大小,单位为px),也可以指定是否被直接渲染为图片
|-
| <code><nowiki>{{urlencode:字符串}}</nowiki></code><br /><code><nowiki>{{urlencode:字符串|QUERY}}</nowiki></code>、<code><nowiki>{{urlencode:字符串|WIKI}}</nowiki></code>、<code><nowiki>{{urlencode:字符串|PATH}}</nowiki></code>
| <code><nowiki>{{urlencode:a/b c}}</nowiki></code>、<code><nowiki>{{urlencode:a/b c|QUERY}}</nowiki></code> → {{urlencode:a/b c}}<br /><code><nowiki>{{urlencode:a/b c|WIKI}}</nowiki></code> → {{urlencode:a/b c|WIKI}}<br /><code><nowiki>{{urlencode:a/b c|PATH}}</nowiki></code> → {{urlencode:a/b c|PATH}}
| 输出指定字符串经编码后的结果。不同的参数指定不同的编码规则,用于解析页面标题到MediaWiki类站点链接时建议使用WIKI,解析字符串到文件名时建议使用PATH,解析字符串到搜索引擎链接时建议使用(空)、QUERY;如果你不清楚如何选择时,你可以到[[Talk:提问求助区]]求助
|-
| <code><nowiki>{{anchorencode:字符串}}</nowiki></code>
| <code><nowiki>{{anchorencode:a/b c}}</nowiki></code> → <code><nowiki>{{anchorencode:a/b c}}</nowiki></code>
| 输出指定字符串经MediaWiki页内标题链接编码规则编码后的结果,可用于指定内容的标题的页内导航
|-
| <code><nowiki>{{#rel2abs: 路径}}</nowiki></code><br /><code><nowiki>{{#rel2abs: 路径 | 基础路径}}</nowiki></code>
| <code><nowiki>{{#rel2abs: /quok | Help:Foo/bar/baz}}</nowiki></code> → {{#rel2abs: /quok | Help:Foo/bar/baz}}<br /><code><nowiki>{{#rel2abs: ../../../../quok | Help:Foo/bar/baz}}</nowiki></code> → {{#rel2abs: ../../../../quok | Help:Foo/bar/baz}}
| 本函数用于以通用的命令行目录变换格式来变换页面路径:
* 如果没有给定参数2,基础路径为当前页面路径;
* 参数1中可以使用以下格式来变换路径:
**<code><nowiki>.</nowiki></code>指定基础路径;
**<code><nowiki>..</nowiki></code>使基础路径上移一层
**<code><nowiki>/path</nowiki></code>使基础路径移动到下一层名为path的页面
对于不合法的参数1,函数并不会直接抛出错误,而是尝试剔除错误部分继续工作:
* <code><nowiki>{{#rel2abs: ../quok/. | Help:Foo/bar/baz}}</nowiki></code> → {{#rel2abs: ../quok/. | Help:Foo/bar/baz}}
* <code><nowiki>{{#rel2abs: ../../../quok | Help:Foo/bar/baz}}</nowiki></code> → {{#rel2abs: ../../../quok | Help:Foo/bar/baz}}
|-
| <code><nowiki>{{#titleparts: 要解析的标题 | 要返回的层数 | 返回部分的起始点}}</nowiki></code>
| <code><nowiki>{{#titleparts: Talk:Foo/bar/baz/quok | 2}}</nowiki></code> → {{#titleparts: Talk:Foo/bar/baz/quok | 2}}<br /><code><nowiki>{{#titleparts: Talk:Foo/bar/baz/quok | 2 | 2}}</nowiki></code> → {{#titleparts: Talk:Foo/bar/baz/quok | 2 | 2}}<br /><code><nowiki>{{#titleparts: Talk:Foo/bar/baz/quok | -2}}</nowiki></code> → {{#titleparts: Talk:Foo/bar/baz/quok | -2}}<br /><code><nowiki>{{#titleparts: Talk:Foo/bar/baz/quok | -1 | -2}}</nowiki></code> → {{#titleparts: Talk:Foo/bar/baz/quok | -1 | -2}}
| 该函数用于输出给定标题的一部分:
# 参数1指定要解析的标题;
# 参数2指定返回的部分的层数,默认接受正整数向后计数,本参数也可以接受一个负整数,用以从最后一层向前计数舍去被计入的部分;
# 参数3指定从何处开始返回,默认接受正整数从根路径向后计数,本参数也可以接受一个负整数,用以从最后一层向前计数。
注意:
<ul>
<li>本函数会对参数1先进行url解码再进行解析;</li>
<li>本函数返回被解析后的部分;</li>
<li>本函数返回的部分受MediaWiki标题限制:
<ol>
<li>所有下划线会被替换成空格:<code><nowiki>{{#titleparts: Talk:Foo/bah_boo|1|2}}</nowiki></code> → <code><nowiki>{{#titleparts: Talk:Foo/bah_boo|1|2}}</nowiki></code></li>
<li>只对前25层做划分,即第25层和第25层以下的内容会合并为1个第25层:<code><nowiki>{{#titleparts: 1/2/3/4/5/6/7/8/9/10/11/12/13/14/15/16/17/18/19/20/21/22/23/24/25/26/27/28 | 2 | 24}}</nowiki></code> → {{#titleparts: 1/2/3/4/5/6/7/8/9/10/11/12/13/14/15/16/17/18/19/20/21/22/23/24/25/26/27/28 | 2 | 24}}<br />为了避免这个缺陷,你可以用嵌套的方式:<code><nowiki>{{#titleparts: {{#titleparts: 1/2/3/4/5/6/7/8/9/10/11/12/13/14/15/16/17/18/19/20/21/22/23/24/25/26/27/28 | 2 | 24}} | 1 | 2}}</nowiki></code> → {{#titleparts: {{#titleparts: 1/2/3/4/5/6/7/8/9/10/11/12/13/14/15/16/17/18/19/20/21/22/23/24/25/26/27/28 | 2 | 24}} | 1 | 2}}</li>
<li>上一个函数提到的命令行目录变换格式不被接受;</li>
<li>参数1的首字母会变为大写:<code><nowiki>{{#titleparts: talk:a/b/c}}</nowiki></code> → {{#titleparts: talk:a/b/c}}</li>
<li>若参数1不合法则会被直接输出<code><nowiki>{{#titleparts: [[首页]]/123 | 1 | 2}}</nowiki></code> → {{#titleparts: [[首页]]/123 | 1 | 2}}</li>
</li></ol></li>
</ul>
|-
! colspan="3" style="background-color: #DDDDDD;" class="heading" | 名字空间
|-
| colspan="3" | 名字空间解析器函数<code><nowiki>{{ns:}}</nowiki></code>返回标准名字空间的本地化名称(<u>我们使用标准名称作为本地化名称</u>)或自定义名字空间的名称,参数1可以指定名字空间的ID,标准名字空间的MediaWiki标准名称、本地(语言变种)化名,自定义名字空间的名称:
* <code><nowiki>{{ns:2}}</nowiki></code> = <code><nowiki>{{ns:User}}</nowiki></code> = <code><nowiki>{{ns:用户}}</nowiki></code> = <code><nowiki>{{ns:用户}}</nowiki></code> = <code><nowiki>{{ns:使用者}}</nowiki></code> → {{ns:使用者}}
* <code><nowiki>{{ns:5}}</nowiki></code> = <code><nowiki>{{ns:Project Talk}}</nowiki></code> = <code><nowiki>{{ns:希灵帝国设定集讨论}}</nowiki></code> = <code><nowiki>{{ns:希灵帝国设定集讨论}}</nowiki></code> = <code><nowiki>{{ns:希灵帝国设定集 talk}}</nowiki></code> → {{ns:希灵帝国设定集讨论}}
需要注意的是:
# 该解析器函数的参数1可以使用Image,效果与File一致;
# 在解析器函数名后加一个<code><nowiki>e</nowiki></code>可以得到经MediaWiki URL编码规则编码后的标准名字空间的本地化名称或自定义名字空间的名称,很适合用于外链中:
#* <code><nowiki>{{nse:5}}</nowiki></code> → {{nse:5}}
|-
! colspan="3" style="background-color: #DDDDDD;" class="heading" | 格式化函数
|-
| <code><nowiki>{{formatnum:未格式化的数字}}</nowiki></code><br /><code><nowiki>{{formatnum:已格式化的数字|R}}</nowiki></code><br /><code><nowiki>{{formatnum:未格式化的数字|NOSEP}}</nowiki></code>
| 简单例子:
* <code><nowiki>{{formatnum:987654321.654321}}</nowiki></code> → {{formatnum:987654321.654321}}
* <code><nowiki>{{formatnum:987,654,321.654321|R}}</nowiki></code> → {{formatnum:987,654,321.654321|R}}
高级例子:
* <code><nowiki>{{formatnum:{{formatnum:987654321.654321}}|R}}</nowiki></code> → {{formatnum:{{formatnum:987654321.654321}}|R}}(任何情况下)
* <code><nowiki>{{formatnum:00001}}</nowiki></code> → {{formatnum:00001}}
* <code><nowiki>{{formatnum:987654321.654321 |NOSEP}}</nowiki></code> → {{formatnum:987654321.654321 |NOSEP}}
----
错误的输入会导致无法预测的输出,不论是否有参数2<code><nowiki>|R</nowiki></code>:
* <code><nowiki>{{formatnum:987.654,321}}</nowiki></code> → {{formatnum:987.654,321}}
* <code><nowiki>{{formatnum:987.654,321|R}}</nowiki></code> → {{formatnum:987.654,321|R}}
| 参数1接受任何阿拉伯数字,按照站点默认区域数字格式用分位符号分组,将其本地化后输出。

参数2有两个可接受字符串:
# <code><nowiki>|R</nowiki></code>可以使函数的行为倒转,即输入已格式化的数字输出完全无格式数字(只有小数点<code><nowiki>.</nowiki></code>,没有其他的格式),可以用在数学计算中。但请注意只有在输入的数字是完全格式化后它的输出才符合预期;
# <code><nowiki>|NOSEP</nowiki></code>会使函数不对数字做任何分组,仅保留小数点。

'''注意''':
# 开头的前导零不会被去除,如果你要去除请使用<code><nowiki>{{#expr:00001}}</nowiki></code>;
# 如果输入的数字格式有误,那么输出的数字无法保证格式正确。
----
如果你'''真的'''需要输入一个'''无法保证格式正确的数字'''的话,你可以使用<code><nowiki>{{formatnum:}}</nowiki></code>两次,但请不要在输入数字可能有数位分组格式的情况下使用这种变通方式,否则分隔符可能会消失或数字无法被格式化。请注意这种方法是非常取巧的,因此它的输出结果可能不可靠。
|-
| <code><nowiki>{{#dateformat:日期}}</nowiki></code><br /><code><nowiki>{{#formatdate:日期}}</nowiki></code><br/><code><nowiki>{{#dateformat:日期|格式规则}}</nowiki></code><br /><code><nowiki>{{#formatdate:日期|格式规则}}</nowiki></code>
| <code><nowiki>{{#dateformat:25 dec 2009}}</nowiki></code> → {{#dateformat:25 dec 2009}}<br /><code><nowiki>{{#formatdate:dec 25,2009|dmy}}</nowiki></code> → {{#formatdate:dec 25,2009|dmy}}<br /><code><nowiki>{{#dateformat:2009-12-25|mdy}}</nowiki></code> → {{#dateformat:2009-12-25|mdy}}<br /><code><nowiki>{{#formatdate:2009 dec 25|ISO 8601}}</nowiki></code> → {{#formatdate:2009 dec 25|ISO 8601}}
| 参数1接受一个未格式化的日期,按照[[Special:参数设置#mw-prefsection-rendering|设置#显示]]里的“日期格式”设置将其格式化。对于未登陆的读者和未设置日期格式的用户,可以通过参数2指定格式:<code><nowiki>mdy</nowiki></code>、<code><nowiki>dmy</nowiki></code>、<code><nowiki>ymd</nowiki></code>(输出的字母全小写)。如果参数1只给出月日,那么只有<code><nowiki>mdy</nowiki></code>和<code><nowiki>dmy</nowiki></code>才是有效的格式。如果未指定格式或者格式无效,那么参数1的格式将被指定为输出格式。如果参数1的日期格式无效,那么函数输出参数1的原样。

'''警告''':即使ISO 8601格式要求参数1的日期是公历日期,若参数2指定ISO 8601,函数也能对那些超出通常公历范围的日期进行格式化。同样,函数无法正确转换ISO 9601格式负数年份和公园前的年份。
|-
| <code><nowiki>{{lc:字符串}}</nowiki></code>
| <code><nowiki>{{lc:DATA CENTER}}</nowiki></code> → {{lc:DATA CENTER}}
| 将字符串完全小写化
|-
| <code><nowiki>{{lcfirst:字符串}}</nowiki></code>
| <code><nowiki>{{lcfirst:DATA center}}</nowiki></code> → {{lcfirst:DATA center}}
| 将字符串首字母小写化
|-
| <code><nowiki>{{uc:字符串}}</nowiki></code>
| <code><nowiki>{{uc:text transform}}</nowiki></code> → {{uc:text transform}}
| 将字符串完全大写化
|-
| <code><nowiki>{{ucfirst:字符串}}</nowiki></code>
| <code><nowiki>{{ucfirst:text TRANSFORM}}</nowiki></code> → {{ucfirst:text TRANSFORM}}
| 将字符串首字母大写化
|-
| <code><nowiki>{{padleft:原字符串|补足后的字符串长度}}</nowiki></code><br /><code><nowiki>{{padleft:原字符串|补足后的字符串长度|补足用的字符串}}</nowiki></code>
| <code><nowiki>{{padleft:xyz|5}}</nowiki></code> → {{padleft:xyz|5}}<br /><code><nowiki>{{padleft:xyz|5|_}}</nowiki></code> → {{padleft:xyz|5|_}}<br /><code><nowiki>{{padleft:xyz|5|abc}}</nowiki></code> → {{padleft:xyz|5|abc}}<br /><code><nowiki>{{padleft:xyz|7|abc}}</nowiki></code> → {{padleft:xyz|7|abc}}<br /><code><nowiki>{{padleft:xyz|2}}</nowiki></code> → {{padleft:xyz|2}}<br /><code><nowiki>{{padleft:|4|xyz}}</nowiki></code> → {{padleft:|4|xyz}}
| 将参数1通过在左侧补上参数3指定的字符串(默认为0)补足到参数2指定的长度,参数3指定的字符串可能被截断以保证补足后的字符串长度满足要求
|-
| <code><nowiki>{{padright:原字符串|补足后的字符串长度}}</nowiki></code><br /><code><nowiki>{{padright:原字符串|补足后的字符串长度|补足用的字符串}}</nowiki></code>
| <code><nowiki>{{padright:xyz|5}}</nowiki></code> → {{padright:xyz|5}}<br /><code><nowiki>{{padright:xyz|5|_}}</nowiki></code> → {{padright:xyz|5|_}}<br /><code><nowiki>{{padright:xyz|5|abc}}</nowiki></code> → {{padright:xyz|5|abc}}<br /><code><nowiki>{{padright:xyz|7|abc}}</nowiki></code> → {{padright:xyz|7|abc}}<br /><code><nowiki>{{padright:xyz|2}}</nowiki></code> → {{padright:xyz|2}}<br /><code><nowiki>{{padright:|4|xyz}}</nowiki></code> → {{padright:|4|xyz}}
| 与<code><nowiki>{{padleft:}}</nowiki></code>近乎一样,只是在右边补足
|-
! colspan="3" style="background-color: #DDDDDD;" class="heading" | 本地化函数
|-
| <code><nowiki>{{plural:数字|单数形式|复数形式}}</nowiki></code>
| <code><nowiki>{{plural:0|is|are}}</nowiki></code> → {{plural:0|is|are}}<br /><code><nowiki>{{plural:1*1|is|are}}</nowiki></code> → {{plural:1*1|is|are}}<br /><code><nowiki>{{plural:21 mod 10|is|are}}</nowiki></code> → {{plural:21 mod 10|is|are}}<br /><code><nowiki>{{plural:{{#expr:21 mod 10}}|is|are}}</nowiki></code> → {{plural:{{#expr:21 mod 10}}|is|are}}
| 根据参数1是单数还是复数,输出不同的字符串:单数输出参数2,复数输出参数3。判断是否单复数的标准是<code><nowiki>{{#switch: 1 | {{{1}}} | {{#expr: {{{1}}} }} = true | #defualt = false}}</nowiki></code>。
|-
| <code><nowiki>{{gender:指定用户名|男性时的文本|女性时的文本|未选择性别时的文本}}</nowiki></code><br /><code><nowiki>{{gender:|男性时的文本|女性时的文本|未选择性别时的文本}}</nowiki></code><br /><code><nowiki>{{gender:.|男性时的文本|女性时的文本|未选择性别时的文本}}</nowiki></code>
| ''(根据指定用户的设置而定)''
| 根据指定的用户的[[Special:参数设置#mw-prefsection-personal|设置#用户资料]]的“语言”设置中的性别部分,返回该性别对应的文本。

'''注意''':
# 如果参数4未给出,那么当用户设置为“中性”时使用男性文本;
# 如果参数3未给出,那么当用户设置为“女性”时使用男性文本;
# 如果参数1为空,则指定当前用户(未登陆读者使用站点默认设置),但这种方式只能在MediaWiki名字空间下的页面使用;
# 如果参数1为<code><nowiki>.</nowiki></code>,则使用站点默认设置。
|-
| <code><nowiki>{{int:信息名称}}</nowiki></code>
| <code><nowiki>{{int:edit}}</nowiki></code> → {{int:edit}}<br /><code><nowiki>{{int:editsectionhint|MediaWiki}}</nowiki></code> → {{int:editsectionhint|MediaWiki}}
| 返回指定信息的'''界面语言变种'''翻译。可以在<code><nowiki>MediaWiki:信息标准名(en-US)/界面语言变种</nowiki></code>里找到,亦可以修改。

对于部分信息,可以提供参数给它们,它们可以通过$1、$2……获取这些参数,在第二个例子里,MediaWiki替换了$1。

这种用法相较于<code><nowiki>{{MediaWiki:信息名称}}</nowiki></code>好处是可以根据用户的界面语言变种的变化而变化,也比模板更快加载,但它不会在编辑框下方的“{{int:templatesused}}”中出现。如果对应信息不存在的话,会以{{int:unexist}}出现.
|-
! colspan="3" style="background-color: #DDDDDD;" class="heading" | 特殊嵌入
|-
| <code><nowiki>{{:(主)名字空间页面名}}</nowiki></code>
| (主名字空间页面)
| 通过<code><nowiki>:</nowiki></code>将名字空间强制指定为(主),从而嵌入(主)名字空间的页面
|-
| <code><nowiki>{{msg:与某一魔术字重名的模板名}}</nowiki></code><br /><code><nowiki>{{raw:与某一魔术字重名的模板名}}</nowiki></code>
| (模板正常渲染内容)
| 与<code><nowiki>{{Tempate:与某一魔术字重名的模板名}}</nowiki></code>一样可以避免魔术字与模板名冲突,而直接嵌入模板
|-
| <code><nowiki>{{msgnw:模板名}}</nowiki></code>
| <code><nowiki>{{msgnw:tl}}</nowiki></code> → {{msgnw:tl}}
| 把模板的源码以纯文本形式输出,自带nowiki效果
|-
| <code><nowiki>{{subst:模板名}}</nowiki></code>
| (模板的正常渲染内容,而模板源码在替换完参数,删去<code><nowiki><noinclude/></nowiki></code>内容后嵌入到页面源码中)
| 把模板的源码嵌入到页面源码中,参见[[Help:模板#subst]]
|-
! colspan="3" style="background-color: #DDDDDD;" class="heading" | 运算与逻辑判断
|-
| <code><nowiki>{{#expr: 数学表达式 }}</nowiki></code>
| <code><nowiki>{{#expr: 1 and -1 }}</nowiki></code> → {{#expr: 1 and -1 }}
----
<code><nowiki>{{#expr: ---...---1}}(110个“-”)</nowiki></code> = {{#expr: --------------------------------------------------------------------------------------------------------------1}}
| 本函数计算并返回数学表达式的结果,你可以使用<code><nowiki>+、-、*、/</nowiki></code>来进行计算。本函数将<code><nowiki>e</nowiki></code>(自然对数的底数)、<code><nowiki>pi</nowiki></code>(π)作为常数使用。本函数支持的运算符如下所示:
{| class="wikitable" style="width: 100%;margin: 0;"
! 运算符 || 名称 || 优先级 || 元数 || 结合性 || 样例
|-
| + || 正 || 9 || 1 || 右 || <nowiki>{{#expr: + 7}}</nowiki> = {{#expr: + 7}}
|-
| - || 负 || 9 || 1 || 右 || <nowiki>{{#expr: - 7}}</nowiki> = {{#expr: - 7}}
|-
| not || 逻辑非 || 9 || 1 || 右 || <nowiki>{{#expr: not 7}}</nowiki> = {{#expr: not 7}}
|-
| * || 乘 || 8 || 2 || 左 || <nowiki>{{#expr: 30 * 7}}</nowiki> = {{#expr: 30 * 7}}
|-
| / || 除 || 8 || 2 || 左 || <nowiki>{{#expr: 30 / 7}}</nowiki> = {{#expr: 30 / 7}}
|-
| div || 除 || 8 || 2 || 左 || <nowiki>{{#expr: 30 div 7}}</nowiki> = {{#expr: 30 div 7}}
|-
| mod || 模 || 8 || 2 || 左 || <nowiki>{{#expr: 30 mod 7}}</nowiki> = {{#expr: 30 mod 7}}
|-
| + || 加 || 6 || 2 || 左 || <nowiki>{{#expr: 30 + 7}}</nowiki> = {{#expr: 30 + 7}}
|-
| - || 减 || 6 || 2 || 左 || <nowiki>{{#expr: 30 - 7}}</nowiki> = {{#expr: 30 - 7}}
|-
| round || 舍入 || 5 || 2 || 左 || <nowiki>{{#expr: 30 / 7 round 7}}</nowiki> = {{#expr: 30 / 7 round 7}}
|-
| = || 等于 || 4 || 2 || 左 || <nowiki>{{#expr: 30 = 7}}</nowiki> = {{#expr: 30 = 7}}
|-
| < || 小于 || 4 || 2 || 左 || <nowiki>{{#expr: 30 < 7}}</nowiki> = {{#expr: 30 < 7}}
|-
| > || 大于 || 4 || 2 || 左 || <nowiki>{{#expr: 30 > 7}}</nowiki> = {{#expr: 30 > 7}}
|-
| <= || 小于等于 || 4 || 2 || 左 || <nowiki>{{#expr: 30 <= 7}}</nowiki> = {{#expr: 30 <= 7}}
|-
| >= || 大于等于 || 4 || 2 || 左 || <nowiki>{{#expr: 30 >= 7}}</nowiki> = {{#expr: 30 >= 7}}
|-
| <> || 不等于 || 4 || 2 || 左 || <nowiki>{{#expr: 30 <> 7}}</nowiki> = {{#expr: 30 <> 7}}
|-
| != || 不等于 || 4 || 2 || 左 || <nowiki>{{#expr: 30 != 7}}</nowiki> = {{#expr: 30 != 7}}
|-
| and || 逻辑与 || 3 || 2 || 左 || <nowiki>{{#expr: 30 and 7}}</nowiki> = {{#expr: 30 and 7}}
|-
| or || 逻辑或 || 2 || 2 || 左 || <nowiki>{{#expr: 30 or 7}}</nowiki> = {{#expr: 30 or 7}}
|}
注意:
<ol>
<li>round运算对运算数正负,位数正负有不同表现:
* <code><nowiki>{{#expr: 999 * 999 round -2}}</nowiki></code> → {{#expr: 999 * 999 round -2}}
* <code><nowiki>{{#expr: 999 * 999 round -20}}</nowiki></code> → {{#expr: 999 * 999 round -20}}
* <code><nowiki>{{#expr: 999 * 999 round -2.9}}</nowiki></code> → {{#expr: 999 * 999 round -2.9}}(这是十分危险的作法,不推荐使用)
</li>
<li>逻辑运算符把假映射为0,把真映射为非0,且返回值只有0(假)或1(真)。</li>
<li>同一表达式中先计算高优先级运算。括号优先级高于一切。</li>
<li>浮点误差有可能造成某些运算的不可预料的结果,特别是最后几位数字的不精确。因此在使用此函数进行非整数运算时,注意不要进行比较运算。</li>
<li>表达式的返回值可能是无法再计算的值(比如用科学计数法表示的数:<code><nowiki>{{#expr: 100000000000000000}}</nowiki></code> → {{#expr: 100000000000000000}}),或者有一部分有效数字没有显示出来。此时该值相当可能难以运算,因此在使用此函数进行运算时,须注意这些问题。</li>
</ol>
----
当表达式有误时函数会返回一个错误信息,此时无法再继续计算,请注意。
|-
| <code><nowiki>{{#if: X | A | B }}</nowiki></code>
| <code><nowiki>{{#if: X | A | B }}</nowiki></code> → {{#if: X | A | B }}<br /><code><nowiki>{{#if: | A | B }}</nowiki></code> → {{#if: | A | B }}<br/><code><nowiki>{{#if: | A }}</nowiki></code> → {{#if: | A }}
| 该函数用于条件逻辑判断:
* 如果X处为非空字符串(忽略前导后缀的空格)那么执行A(以wikitext格式解析);
* 如果X处为空或只有空格那么执行B(同上);
**如果B被省略则输出为空。
|-
| <code><nowiki>{{#ifeq: X | Y | A | B }}</nowiki></code>
| <code><nowiki>{{#ifeq: 1 | 0 | A | B }}</nowiki></code> → {{#ifeq: 1 | 0 | A | B }}<br/><code><nowiki>{{#ifeq: 1 | 1 | A | B }}</nowiki></code> → {{#ifeq: 1 | 1 | A | B }}
| 该函数用于条件逻辑判断:
* 如果<code><nowiki>X == Y</nowiki></code>(忽略前导后缀的空格)那么执行A(以wikitext格式解析);
* 否则执行B(同上);
**如果B被省略则输出为空。
注:<code><nowiki>{{#if: X | A | B }} == {{#ifeq: X | | A | B }}</nowiki></code>
|-
| <code><nowiki>{{#ifexist: 《页面标题》 | A | B }}</nowiki></code>
| <code><nowiki>{{#ifexist: Main Page | A | B }}</nowiki></code> → {{#ifexist: Main Page | A | B }}<br /><code><nowiki>{{#ifexist: 肯定不存在的标题 | A | B }}</nowiki></code> → {{#ifexist: 肯定不存在的标题 | A | B }}}<br /><code><nowiki>{{#ifexist: 肯定不存在的标题 | A }}</nowiki></code> → {{#ifexist: 肯定不存在的标题 | A }}
| 该函数用于条件逻辑判断:
* 如果《页面标题》对应的页面存在,那么执行A(以wikitext格式解析);
* 否则执行B(同上);
**如果B被省略则输出为空。
|-
| <code><nowiki>{{#ifexpr: Fx(表达式) | A | B }}</nowiki></code>
| <code><nowiki>{{#ifexpr: 1+1 | A | B }}</nowiki></code> → {{#ifexpr: 1+1 | A | B }}<br /><code><nowiki>{{#ifexpr: 1-1 | A | B }}</nowiki></code> → {{#ifexpr: 1-1 | A | B }}<br /><code><nowiki>{{#ifexpr: 1-1 | A }}</nowiki></code> → {{#ifexpr: 1-1 | A }}
| 该函数用于条件逻辑判断:
* 如果<code><nowiki>Fx != 0</nowiki></code>,那么执行A(以wikitext格式解析);
* 否则执行B(同上);
**如果B被省略则输出为空。
注:<code><nowiki>{{#ifexpr: Fx(表达式) | A | B }} == {{#ifeq: {{#expr: Fx(表达式)}} | 0 | B | A }}</nowiki></code>
|-
| <code><nowiki>{{#switch: X | Y = A | #default = B}}</nowiki></code>
| <pre>
{{#switch: 1
| 0 = A
| 1 = B
| #default = C
}}
</pre>
→ {{#switch: 1
| 0 = A
| 1 = B
| #default = C
}}
| 该函数用于条件逻辑判断:
* 对于输入值X,函数会与每一个预设值Y做比较,如果相同(不考虑前导后缀空格)则执行对应结果(以wikitext格式解析);
**预设值与结果以<code><nowiki>=</nowiki></code>连接,作为参数提交给函数;
**如果预设值没有对应的结果则会将后面的第一个结果加以执行(例如:<code><nowiki>{{#switch: X | Y | Z = 1}}</nowiki></code>当<code><nowiki>X == Y</nowiki></code>时输出1);
* 如果没有任何一个预设值与输入值相同,则执行<code><nowiki>#default</nowiki></code>给出的默认结果;
**可以不设定默认结果;
**可以省略<code><nowiki>#default=</nowiki></code>,即用'''最后一个没有等号'''的参数作为默认值。
'''注意''':
当一个参数没有带有<code><nowiki>=</nowiki></code>时,该参数会依照下列逻辑被分类:
* 如果该参数不是'''最后一个没有等号'''的参数,那么它将被作为预设值考虑;
* 否则它将被作为默认结果考虑。
|-
| <code><nowiki>{{#time: 格式参数 }}</nowiki></code><br /><code><nowiki>{{#time: 格式参数 | 时间参数 }}</nowiki></code>
| <code><nowiki>{{#time: Y/m/d}}</nowiki></code> → {{#time: Y/m/d}}<br /><code><nowiki>{{#time: Y/m/d|2017-01-04}}</nowiki></code> → {{#time: Y/m/d|2017-01-04}}<br /><code><nowiki>{{#time: Y/m/d H:i:s|+1 second}}</nowiki></code> → {{#time: Y/m/d H:i:s|+1 second}}
| 该函数用来输出时间:
<ul>
<li>格式函数用于指定输出的时间的格式,下表以国际协调时(UTC){{#time:Y年n月j日(l)H时i分s秒}}(北京标准时间{{#time:Y年n月j日(l)H时i分s秒|+8 hours}})为例说明各格式参数的作用。
{| class="wikitable" style="width: 100%;margin: 0"
! 格式参数
! 说明
! 显示结果
|--------------
| A
| 根据时间是上午还是下午,输出AM或PM
| {{#time:A}}
|-
|a
| 根据时间是上午还是下午,输出am或pm
|{{#time:a}}
|-
|c
| 输出长日期
|{{#time:c}}
|-
|D
| 星期数,以一个汉字显示
|{{#time:D}}
|--------------
|d
| 日期日数,补足前导0
|{{#time:d}}
|--------------
| F或M
| 月份,以当前语言输出
|{{#time:F}}
|-
|G或g
| 当前UTC时间小时数
|{{#time:G}}
|-
|H或h
| 小时数,补足前导0
|{{#time:H}}
|-
|i
| 分钟数,补足前导0
|{{#time:i}}
|-
|j
| 日期日数
|{{#time:j}}
|-
|L
| 日期星期数,1位数字,星期日为1,星期六为7
|{{#time:L}}
|-
|l
| 日期星期数,3位汉字
|{{#time:l}}
|-
|m
| 月份数,补足前导0
|{{#time:m}}
|-
|N
| 星期数,星期一为1,星期日为7
|{{#time:N}}
|-
|n
| 月份数
|{{#time:n}}
|-
|r
| 英文长日期格式
|{{#time:r}}
|-
|s
|秒数
|{{#time:s}}
|-
|t
|该月天数
|{{#time:t}}
|-
|U
|UNIX时间戳
|{{#time:U}}
|-
|W
|日期周数,显示日期为当年第几周,补足前导0
|{{#time:W}}
|-
|w
|星期数,星期日为0,星期六为6
|{{#time:w}}
|-
|Y
|日期年份,4位数字
|{{#time:Y}}
|-
|y
|日期年份,2位数字
|{{#time:y}}
|-
|z
|显示日期为当年第几日
|{{#time:z}}
|-
|}
</li>
<li>时间参数可以使用绝对时间,如“2008-12-31 23:59:59”,也可以使用相对时间,如“+7 days”或者“-5 hours”得到默认时间7日之后或默认时间5小时之前的时间。也可以二者混合使用,比如<code><nowiki>{{#time:Y-m-d H:i:s|2001-2-3 04:05:06 +1 year +2 months +3 days +4 hours +5 minutes +6 seconds}}</nowiki></code> → {{#time:Y-m-d H:i:s|2001-2-3 04:05:06 +1 year +2 months +3 days +4 hours +5 minutes +6 seconds}}</li>
<li>系统默认的时间参数为当前UTC+0时间,可以使用<code><nowiki>{{#time:参数|+8 hours}}</nowiki></code>得到当前北京时间(UTC+8时间)。</li>
<li>如果想要输出字母本身,而该字母又是属于格式参数的一种时,可以用英文双引号包裹:<code><nowiki>{{#time: "Y/m/d" == Y/m/d}}</nowiki></code> → {{#time: "Y/m/d" == Y/m/d}}</li>
</ul>
|
|-
! colspan="3" style="background-color: #DDDDDD;" class="heading" | 杂项
|-
| <code><nowiki>{{#language:语言代码}}</nowiki></code><br /><code><nowiki>{{#language:语言代码|目标语言代码}}</nowiki></code>
| <code><nowiki>{{#language:zh-cn}}</nowiki></code> → {{#language:zh-cn}}<br /><code><nowiki>{{#language:zh-cn|en-us}}</nowiki></code> → {{#language:zh-cn|en-us}}
| 以参数2的语言代码指定的语言(没有则以参数1的)输出参数1的语言代码对应的语言全名
|-
| <code><nowiki>{{#special:特殊页面名}}</nowiki></code>
| <code><nowiki>{{#special:watchlist}}</nowiki></code> → {{#special:watchlist}}
| 输出指定标准名称的特殊页面的本地化名。

可以在函数名后加e以输出经MediaWiki URL编码规则编码后的页面名:
* <code><nowiki>{{#speciale:watchlist}}</nowiki></code> → {{#speciale:watchlist}}
|-
| <code><nowiki>{{#tag:标签名称|内容|属性1=属性值1|属性2=属性值2|……}}</nowiki></code>
| <code><nowiki>{{#tag:div|右浮动|style="float: right; clear: both; padding: 1em;"}}</nowiki></code> → {{#tag:div|右浮动|style="float: right; clear: both; padding: 1em;"}}
| 输出一个元素的HTML源码,参数1为其标签名,参数2为其内容,参数3及之后为其属性值对。

内容中的wikitext会在tag函数渲染之前完成渲染,并与往常一样阻止不受信任的代码渲染。如果内容需要为空,则参数2'''必须为空,而不是省略'''。
|-
| <code><nowiki>{{#invoke:模块名|函数名|参数1|参数2|……}}</nowiki></code>
| (根据指定模块输出)
| Lua模块的调用方法
|-
| <code><nowiki>{{DISPLAYTITLE:标题}}</nowiki></code><br /><code><nowiki>{{DISPLAYTITLE:标题|noerror}}</nowiki></code><br /><code><nowiki>{{DISPLAYTITLE:标题|noreplace}}</nowiki></code>
| -
| 本函数用以改变当前页面的标题的格式做出变换,该函数无法做出修改标题的行为,只能做出例如改变大小写、下划线替代空格等的修改。

参数1为“noerror”或“noreplace”时,会阻止由于使用多个该函数而导致的错误抛出。
|-
| <code><nowiki>{{DEFAULTSORT:分类索引}}</nowiki></code><br /><code><nowiki>{{DEFAULTSORTKEY:分类索引}}</nowiki></code><br /><code><nowiki>{{DEFAULTCATEGORYSORT:分类索引}}</nowiki></code><br /><code><nowiki>{{DEFAULTSORT:分类索引|noerror}}</nowiki></code><br /><code><nowiki>{{DEFAULTSORT:分类索引|noreplace}}</nowiki></code>
| -
| 本函数用以改变当前页面在分类中的索引,比如<code><nowiki>{{DEFAULTSORT:A}}</nowiki></code>会把页面分到A部分下。

参数1为“noerror”或“noreplace”时,会阻止由于使用多个该函数而导致的错误抛出。
|}
== 参见 ==
*[[mw:Help:Extension:ParserFunctions/zh]]
[[Category:帮助]]
1,819
个编辑

导航菜单