跳转到内容
主菜单
主菜单
移至侧栏
隐藏
导航
首页
最近更改
随机页面
沙盒
编辑指导
用户守则
编写指导
社群首页
服务器索引
推荐服务器
知名服务器
服务器分类
基岩版服务器
Java版服务器
服务端教程
友情链接
MCBBS Wiki
像素科技
关于
站长主页
交流群
QQ频道
MCServerWiki
搜索
搜索
外观
创建账号
登录
个人工具
创建账号
登录
未登录编辑者的页面
了解详情
贡献
讨论
欢迎来到MCServerWiki!如果您是第一次来到这里,请点击:
创建账户
编辑“︁
帮助:魔术字/解析器函数
”︁
帮助
讨论
大陆简体
阅读
编辑源代码
查看历史
工具
工具
移至侧栏
隐藏
操作
阅读
编辑源代码
查看历史
常规
链入页面
相关更改
页面信息
导航
特殊页面
外观
移至侧栏
隐藏
警告:
您没有登录。如果您进行任何编辑,您的IP地址会公开展示。如果您
登录
或
创建账号
,您的编辑会以您的用户名署名,此外还有其他益处。
反垃圾检查。
不要
加入这个!
{{浮动帮助菜单}} '''解析器函数'''与系统变量非常相似,但与后者相比,前者'''全部'''要求'''至少传入'''一个参数,所有的参数1与函数名之间均用<code>:</code>而不是<code>|</code>分割。 解析器函数有时会在函数名前加上<code><nowiki>#</nowiki></code>用以与模板区分。 本页面是萌娘百科[https://zh.moegirl.org/Help:%E9%AD%94%E6%9C%AF%E5%AD%97/%E8%A7%A3%E6%9E%90%E5%99%A8%E5%87%BD%E6%95%B0]页面的拷贝,经过了一些修改。 == 列表 == 以下表格详细说明了Wiki可用的解析器函数,部分术语未作解释。 {| class="wikitable" style="width: 100%;" |- ! 解析器函数 ! 输入 → 输出 ! 描述 |- ! colspan="3" style="background-color: #DDDDDD;" class="heading" id="{{anchorencode:URL与标题的数据和解析}}" | URL与标题的数据和解析 |- | <code><nowiki>{{localurl:页面名称}}</nowiki></code><br><code><nowiki>{{localurl:页面名称|查询字符串}}</nowiki></code> | <code><nowiki>{{localurl:首页}}</nowiki></code> → {{localurl:首页}}<br><code><nowiki>{{localurl:首页|printable=yes}}</nowiki></code> → {{localurl:首页|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:混乱.png}}</nowiki></code> → {{filepath:混乱.png}}<br><code><nowiki>{{filepath:混乱.png|120}}</nowiki></code> → {{filepath:混乱.png|120}}<br><code><nowiki>{{filepath:混乱.png|nowiki}}</nowiki></code> → {{filepath:混乱.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:混乱}}</nowiki></code>、<code><nowiki>{{urlencode:混乱|QUERY}}</nowiki></code> → {{urlencode:混乱}}<br><code><nowiki>{{urlencode:混乱|WIKI}}</nowiki></code> → {{urlencode:混乱|WIKI}}<br><code><nowiki>{{urlencode:混乱|PATH}}</nowiki></code> → {{urlencode:混乱|PATH}} | 输出指定字符串经编码后的结果。不同的参数指定不同的编码规则,用于解析页面标题到MediaWiki类站点链接时建议使用WIKI,解析字符串到文件名时建议使用PATH,解析字符串到搜索引擎链接时建议使用(空)、QUERY;如果你不清楚如何选择时,你可以到[[讨论:讨论板]]求助 |- | <code><nowiki>{{anchorencode:字符串}}</nowiki></code> | <code><nowiki>{{anchorencode:混乱}}</nowiki></code> → {{anchorencode:混乱}} | 输出指定字符串经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> | 本函数用于以通用的命令行目录变换格式来变换页面路径: * 如果没有给定参数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> → {{#titleparts: Talk:Foo/bah_boo|1|2}}</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" id="{{anchorencode:名字空间}}" | 名字空间 |- | colspan="3" | 名字空间解析器函数<code><nowiki>{{ns:}}</nowiki></code>返回标准名字空间的本地化名称(<u>Wiki使用标准名称作为本地化名称</u>)或自定义名字空间的名称,参数1可以指定名字空间的ID,标准名字空间的MediaWiki标准名称、本地(语言变种)化名,自定义名字空间的名称: * <code><nowiki>{{ns:2}}</nowiki></code> = <code><nowiki>{{ns:User}}</nowiki></code> = <code><nowiki>{{ns:用户}}</nowiki></code> → {{ns:用户}} * <code><nowiki>{{ns:5}}</nowiki></code> = <code><nowiki>{{ns:Project Talk}}</nowiki></code> = <code><nowiki>{{ns:MCBBS Wiki讨论}}</nowiki></code> → {{ns:MCBBS Wiki讨论}} 需要注意的是: # 该解析器函数的参数1可以使用Image,效果与File一致; # 在解析器函数名后加一个<code><nowiki>e</nowiki></code>可以得到经MediaWiki URL编码规则编码后的标准名字空间的本地化名称或自定义名字空间的名称,很适合用于外链中: #* <code><nowiki>{{ns</nowiki>'''<u>e</u>'''<nowiki>:5}}</nowiki></code> → {{nse:5}} |- ! colspan="3" style="background-color: #DDDDDD;" class="heading" id="{{anchorencode:格式化函数}}" | 格式化函数 |- | <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>(“无分隔符”)参数会使数位分组分隔符和小数点分隔符不被修改,此时 formatnum 只会在不使用印度-阿拉伯数字系统的语言中将数字字符进行转换。<code>NOSEP</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}} * <code><nowiki>{{#formatdate:dec 25,2009|dmy}}</nowiki></code> → {{#formatdate:dec 25,2009|dmy}} * <code><nowiki>{{#dateformat:2009-12-25|mdy}}</nowiki></code> → {{#dateformat:2009-12-25|mdy}}(本例子中只有这一行合法,mw添加了额外的信息:<code><nowiki><span class="mw-formatted-date" title="2009-12-25">12月 25, 2009</span></nowiki></code>) * <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,函数也能对那些超出通常公历范围的日期进行格式化(例如1583年之前的日期)。不过,函数无法正确转换ISO 8601格式下的负数年份和通常格式下的公元前的年份。 |- | <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" id="{{anchorencode:特殊嵌入}}" | 特殊嵌入 |- | <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>内容后粘贴到页面源码中) | rowspan="2" | 把模板的源码嵌入到页面源码中,参见[[Help:替换引用]] |- | <code><nowiki>{{safesubst:模板名}}</nowiki></code> | (模板的正常渲染内容。当上层模板是被正常嵌套时按正常方式被嵌套;而当上层模板是被替换引用时,模板源码在替换完参数,删去<code><nowiki><noinclude/></nowiki></code>内容后粘贴到页面源码中) |- ! colspan="3" style="background-color: #DDDDDD;" class="heading" id="{{anchorencode:运算与逻辑判断}}" | 运算与逻辑判断(来自扩展:解析器函数) |- | <code><nowiki>{{#expr: 数学表达式 }}</nowiki></code> | <code><nowiki>{{#expr: 1 and -1 }}</nowiki></code> → {{#expr: 1 and -1 }} ---- <code><nowiki>{{#expr: ---...---1}}(95个“-”)</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}} |- | abs || 绝对值 || 10 || 1 || 右 ||<nowiki>{{#expr: abs 2}}</nowiki> = {{#expr: abs2}}<br><nowiki>{{#expr: abs -2}}</nowiki> = {{#expr: abs-2}} |- | ^ || 乘方 || 10 || 1 || 右 ||<nowiki>{{#expr: 2^3}}</nowiki> = {{#expr: 2^3}} |- |sqrt||开方 || 10 || 1 || 右 ||<nowiki>{{#expr: sqrt9}}</nowiki> = {{#expr: sqrt9}} |- |ln || 对数 || 10 || 1 || 右 ||<nowiki>{{#expr: ln10}}</nowiki> = {{#expr: ln10}}<br>log<sub>2</sub>8(换底):<nowiki>{{#expr: ln8 div ln2}}</nowiki> = {{#expr: ln8 div ln2}} |- |floor || 向下取整 || ? || 1 || ? ||<nowiki>{{#expr:floor(5.2)}} = 5</nowiki> |- |ceil || 向上取整 || ? || 1 || ? ||<nowiki>{{#expr:ceil(5.2)}} = 6</nowiki> |- |支持:<br>sin、cos、tan<br>不支持:<br>csc、sec、cot || 三角函数 || 10 || 1 || 右 | 弧度制:<nowiki>{{#expr:sin45}}</nowiki> = {{#expr:sin45}}<br>角度制:<nowiki>{{#expr:cos(45 * pi div 180)}}</nowiki> = {{#expr:cos(45 * pi div 180)}} |- |支持:<br>asin、acos、atan<br>不支持:<br>acsc、asec、acot || 反三角函数 || 10 || 1 || 右 | 弧度制:<nowiki>{{#expr:sin45}}</nowiki> = {{#expr:asin 0.5}}<br>角度制:<nowiki>{{#expr:(asin 0.5)*180/pi}}</nowiki> = {{#expr:(asin 0.5)*180/pi}} |} 注意: <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(以wikitext格式解析); **如果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(以wikitext格式解析); **如果B被省略则输出为空。 注:<code><nowiki>{{#if: X | A | B }} == {{#ifeq: X | | A | B }}</nowiki></code> |- | <code><nowiki>{{#iferror: X | A | B }}</nowiki></code> | <code><nowiki>{{#iferror: <span class="error"></span> | error | correct}}</nowiki></code> → {{#iferror: <span class="error"></span> | error | correct}}<br><code><nowiki>{{#iferror: I'm fine. | error}}</nowiki></code> → {{#iferror: I'm fine. | error}}<br><code><nowiki>{{#iferror: {{#rel2abs: ../../../../quok | Help:Foo/bar/baz}}}}</nowiki></code> → {{#iferror: {{#rel2abs: ../../../../quok | Help:Foo/bar/baz}}}} | 该函数用于条件逻辑判断: * 如果X包含<code><nowiki>class="error"</nowiki></code>那么执行B(以wikitext格式解析); **若B被省略则输出X; * 否则执行A(以wikitext格式解析); **如果A被省略则输出为空。 该函数相当适合于执行可能会报错的其他的解释器函数(比如#expr,#time和#rel2abs)、隐藏模板错误(比如模板循环和模板递归)以及隐藏一些其它的解释器“软错误”(如Lua模块、Widget等)。 |- | <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(以wikitext格式解析); **如果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 }} <pre> {{#switch: 2 | 0 = A | 1 = B | C }} </pre> → {{#switch: 2 | 0 = A | 1 = B | 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><br><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: F d H:i:s|+1 second}}</nowiki></code> → {{#time: F d H:i:s|+1 second}}<br><code><nowiki>{{#time: F d H:i:s|+1 second|en}}</nowiki></code> → {{#time: F d H:i:s|+1 second|en}}<br><code><nowiki>{{#time: F d H:i:s|+1 second|zh|1}}</nowiki></code> → {{#time: F d H:i:s|+1 second|zh|1}} | 该函数用来输出时间: <ul> <li>格式参数用于指定输出的时间的格式,下表以样例时间为例说明各格式参数的作用。'''特别注意:系统默认时区为UTC+0,所以以下结果默认以<u>协调世界时</u>为依据''',中国标准时间仅供本地时间对应,更改时区的办法参见表格后的说明部分。此处只列举常见的参数,更多参数请浏览[[mw:Help:Extension:ParserFunctions/zh##time|幫助:扩展:解析器函數##time]]。 {| class="wikitable" style="width: 100%;margin: 0" ! 格式参数 ! 说明 ! 显示结果 |- | A | 根据时间是上午还是下午,输出AM或PM | {{#time:A}} |- |a | 根据时间是上午还是下午,输出am或pm |{{#time:a}} |- |c | 输出长日期(ISO 8601格式) |{{#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 | 英文长日期格式(ISO 8601格式) |{{#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 |显示日期为当年第几日(1月1日是第0天) |{{#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}}<br>时间参数也可以使用Unix时间戳,这需要在时间戳前添加<code><nowiki>@</nowiki></code>,如<code><nowiki>{{#time:Y-m-d H:i:s|@981144306}}</nowiki></code> → {{#time:Y-m-d H:i:s|@981144306}},'''但如果在非Unix时间戳前添加<code><nowiki>@</nowiki></code>则很可能导致一个错误''',详见[[mw:Help:Extension:ParserFunctions/zh##time|幫助:扩展:解析器函數##time]] *更详细地说,时间参数支持任何PHP支持的[https://www.php.net/manual/zh/datetime.formats.date.php 日期格式]、[https://www.php.net/manual/zh/datetime.formats.time.php 时间格式]、[https://www.php.net/manual/zh/datetime.formats.compound.php 日期时间复合格式]和[https://www.php.net/manual/zh/datetime.formats.relative.php 相对格式]</li> <li>语言代码可以指定为mw支持的任意语言,例如en、zh-hant、ja之类的</li> <li><code><nowiki>是否使用本地时区</nowiki></code>参数将会被传递给[https://www.php.net/manual/en/language.types.boolean.php#language.types.boolean.casting PHP解释器],若被解释为true则使用萌百本地时区(CST)</li> </ul> 注意: *如果想要输出字母本身,而该字母又是属于格式参数的一种时,可以用英文双引号包裹:<code><nowiki>{{#time: "Y/m/d" == Y/m/d}}</nowiki></code> → {{#time: "Y/m/d" == Y/m/d}} *本函数支持的时间范围为1年1月1日~9999年12月31日,但特定的时间范围会有奇怪的结果,详见[[mw:Help:Extension:ParserFunctions/zh##time|幫助:扩展:解析器函數##time]] |- | <code><nowiki>{{#timel: 格式参数 }}</nowiki></code><br><code><nowiki>{{#timel: 格式参数 | 时间参数 }}</nowiki></code><br><code><nowiki>{{#timel: 格式参数 | 时间参数 | 语言代码}}</nowiki></code> | <code><nowiki>{{#timel: Y/m/d}}</nowiki></code> → {{#timel: Y/m/d}}<br><code><nowiki>{{#timel: Y/m/d|2017-01-04}}</nowiki></code> → {{#timel: Y/m/d|2017-01-04}}<br><code><nowiki>{{#timel: Y/m/d H:i:s|+1 second}}</nowiki></code> → {{#timel: Y/m/d H:i:s|+1 second}}<br><code><nowiki>{{#timel: Y/m/d H:i:s|+1 second|en}}</nowiki></code> → {{#timel: Y/m/d H:i:s|+1 second|en}} | 该函数与<code><nowiki>{{#time}}</nowiki></code>几乎一致,除了没有参数4并且强制使用本地时区以外。 |- ! colspan="3" style="background-color: #DDDDDD;" class="heading" id="{{anchorencode:变量}}" | 变量(来自扩展:Variables) |- | <code><nowiki>{{#vardefine: 变量名 | 变量值}}</nowiki></code> | style="text-align: center;" | - | 将 ''变量值'' 赋给一个名为 ''变量名'' 的变量 |- | <code><nowiki>{{#vardefineecho: 变量名 | 变量值}}</nowiki></code> | <code><nowiki>{{#vardefineecho: hello | world}}</nowiki></code> → {{#vardefineecho: hello | world}} | 将 ''变量值'' 赋给一个名为 ''变量名'' 的变量,并输出 ''变量值'' |- | <code><nowiki>{{#var: 变量名}}</nowiki></code><br><code><nowiki>{{#var: 变量名 | 默认值}}</nowiki></code> | <code><nowiki>{{#var: hello}}</nowiki></code> → {{#var: hello}}<br><code><nowiki>{{#var: foo | no-op}}</nowiki></code> → {{#var: foo | no-op}} | 输出名为 ''变量名'' 的变量的值,如果没有名为 ''变量名'' 的变量则输出默认值 |- | <code><nowiki>{{#varexists: 变量名}}</nowiki></code><br><code><nowiki>{{#varexists: 变量名 | 存在时的返回值}}</nowiki></code><br><code><nowiki>{{#varexists: 变量名 | 存在时的返回值 | 不存在时的返回值}}</nowiki></code> | <code><nowiki>{{#varexists: hello}}</nowiki></code> → {{#varexists: hello}}<br><code><nowiki>{{#varexists: foo | exist}}</nowiki></code> → {{#varexists: foo | exist}}<br><code><nowiki>{{#varexists: foo | exist | does not exist}}</nowiki></code> → {{#varexists: foo | exist | does not exist}} | 判断是否存在一个名为 ''变量名'' 的变量,若存在则返回 ''存在时的返回值''(默认为 <code><nowiki>1</nowiki></code>),若不存在则返回 ''不存在时的返回值''(默认为 ''空'') |- | <code><nowiki>{{#var_final: 变量名}}</nowiki></code><br><code><nowiki>{{#var_final: 变量名 | 默认值}}</nowiki></code> | <code><nowiki>{{#var_final: index}}</nowiki></code> → {{#var_final: index}} * 该变量在下一行(<code><nowiki>{{#while:</nowiki></code>)才被赋值,可用来观察效果 <code><nowiki>{{#var_final: foo | <u>no-op</u>}}</nowiki></code> → {{#var_final: foo | <u>no-op</u>}} | 在解析器解析到该魔术字时,先展开 ''默认值'' 对应的 wikitext,然后等待解析器解析完全文: * 若解析完全文后存在一个名为 ''变量名'' 的变量则输出该变量名(这意味着该魔术字不能用作其他模板/魔术字的参数); * 若解析完全文后发现不存在名为 ''变量名'' 的变量则输出 ''默认值''; '''注意''':不论 ''默认值'' 是否用得上,其内的 wikitext 都会被执行,您可以在沙盒里测试以下代码并观察页面标题:<code><nowiki>{{#vardefine: hello | world}}{{#var_final: hello | {{DISPLAYTITLE: var_final 测试}}}}</nowiki></code> |- ! colspan="3" style="background-color: #DDDDDD;" class="heading" id="{{anchorencode:杂项}}" | 杂项 |- | <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>{{#special</nowiki>'''<u>e</u>'''<nowiki>:watchlist}}</nowiki></code> → {{#speciale:watchlist}} |- | <code><nowiki>{{#tag:标签名称|内容|属性1=属性值1|属性2=属性值2|……}}</nowiki></code> | <code><nowiki>{{#tag:div|右浮动|style="border: 1px gray solid; float: right; clear: both; padding: 1em;"}}</nowiki></code> → {{#tag:div|右浮动|style="border: 1px gray solid; float: right; clear: both; padding: 1em;"}} | 输出一个元素的[[Help:HTML|HTML]]源码,参数1为其标签名,参数2为其内容,参数3及之后为其属性值对。请不要向参数1传入自闭合标签名,如br、img、hr等。 内容中的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> | style="text-align: center;" | - | 本函数用以改变当前页面的标题的格式做出变换,该函数无法做出修改标题的行为,只能做出例如改变大小写、下划线替代空格等的修改。 参数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> | style="text-align: center;" | - | 本函数用以改变当前页面在分类中的索引,比如<code><nowiki>{{DEFAULTSORT:A}}</nowiki></code>会把页面分到A部分下。 参数1为“noerror”或“noreplace”时,会阻止由于使用多个该函数而导致的错误抛出。 |} == 参见 == *mediawiki **[[mw:Help:Magic words/zh|魔术字]] **[[mw:Help:Extension:ParserFunctions/zh|帮助:扩展:解析器函数]] <references /> [[分类:编辑帮助]] [[分类:引用萌娘百科的页面]]
摘要:
请注意,所有对MCServerWiki的贡献均可能会被其他贡献者编辑、修改或删除。如果您不希望您的文字作品被随意编辑,请不要在此提交。
您同时也向我们承诺,您提交的内容为您自己所创作,或是复制自公共领域或类似自由来源(详情请见
MCServerWiki:著作权
)。
未经许可,请勿提交受著作权保护的作品!
取消
编辑帮助
(在新窗口中打开)
该页面使用的模板:
模板:Hlim
(
编辑
)
模板:Ns:MCBBS Wiki讨论
(
编辑
)
模板:Tl
(
编辑
)
模板:帮助列表项目迷你
(
编辑
)
模板:浮动帮助菜单
(
编辑
)
搜索
搜索
编辑“︁
帮助:魔术字/解析器函数
”︁
添加话题