帮助:编辑教程:修订间差异
小无编辑摘要 |
|||
| (未显示同一用户的4个中间版本) | |||
| 第1行: | 第1行: | ||
{{ | {{编辑中}} | ||
== 修改页面 == | == 修改页面 == | ||
| 第708行: | 第708行: | ||
|用于在模板或者是表格内插入管道符号。|| | |用于在模板或者是表格内插入管道符号。|| | ||
|} | |} | ||
== 状态开关 == | == 状态开关 == | ||
| 第750行: | 第748行: | ||
=== | |||
|} | |||
==解析函数== | |||
===所有函数均适用的注意事项=== | |||
以下是一个'''解析函数'''的基本格式: | |||
:<code><nowiki>{{#</nowiki>'''函数名''': '''参数1''' | '''参数2''' | '''...''' | '''参数n''' <nowiki>}}</nowiki></code> | |||
在页面中写上如此一般的代码后,后台解析页面是就会呼叫'''解析函数'''“函数名”,并传入相应的'''参数'''。如果输入的'''参数'''内同样的含有函数(或模板等需要展开运算的代码),'''解析器'''将会先运算和展开'''参数'''里的代码。这种先后次序与数学公式中的括号是同等效果,由内至外逐一展开运算。 | |||
<br> | |||
其他注意事项: | |||
* 某些'''函数'''对“该'''参数'''的值为空白”及“缺少该'''参数'''”的理解会有差异,导致运算处理和最终输出出现差错,需要留意该'''函数'''有没有这种设定。例如[[#regex|regex]]就有这种设定。 | |||
* 字符本身和对应的HTML实体(HTML Entity<ref>https://www.w3schools.com/html/html_entities.asp</ref>)不一定会受到一致的处理,甚至不会相互等于,需要留意'''函数'''是否会将输入解码或将输出编码。 | |||
* 如果'''函数'''突然出现不符合预期的输出,那很有可能是你忘记了对某些特殊字符转义。 | |||
* '''参数'''内容的前后可以随意添加空格和换行,可以适当使用让排版更整齐易懂。 | |||
=== expr === | |||
{| class=wikitable style= float:right; width:45%; height:400px; margin-right:0em | |||
|- | |||
! 类型 | |||
! 运算符 | |||
|- | |||
| style="text-align: center" | 组合(括号) | |||
| style="word-spacing: 0.5em; font-weight: bold;" | <code>( )</code> | |||
|- | |||
| style="text-align: center" rowspan="2" | 数字 | |||
| <code>'''1234.5'''</code> 、 <code>'''e'''</code> (2.718) 、 <code>'''pi'''</code> (3.142) | |||
|- | |||
| 科学计数法(二元) <code>'''e'''</code> 、 正负号(一元) <code>'''+'''</code>,<code>'''-'''</code> | |||
|- | |||
| style="text-align: center" | 一元运算符 | |||
| style="word-spacing: 0.5em; font-weight: bold;" | <code>not ceil trunc floor abs exp ln sin cos tan acos asin atan</code> | |||
|- | |||
| style="text-align: center" rowspan="3" | 二元运算符 | |||
| style="word-spacing: 0.5em; font-weight: bold;" | <code>^</code> | |||
|- | |||
| style="word-spacing: 0.5em; font-weight: bold;" | <code>* / div mod</code> | |||
|- | |||
| style="word-spacing: 0.5em; font-weight: bold;" | <code>+ -</code> | |||
|- | |||
| style="text-align: center" | 四舍五入 | |||
| style="word-spacing: 0.5em; font-weight: bold;" | <code>round</code> | |||
|- | |||
| style="text-align: center" rowspan="3" | 逻辑运算符 | |||
| style="word-spacing: 0.5em; font-weight: bold;" | <code>= != <> > < >= <=</code> | |||
|- | |||
| style="word-spacing: 0.5em; font-weight: bold;" | <code>and</code> | |||
|- | |||
| style="word-spacing: 0.5em; font-weight: bold;" | <code>or</code> | |||
|} | |||
来自ParserFunctions。<br /> | |||
用于验证一个数学表达式,并返回它的计算值。<br /> | |||
此函数在Scribunto扩展中也可用,函数名为<code>mw.ext.ParserFunctions.expr</code>。 | |||
;格式:<code><nowiki>{{#expr: 表达式 }}</nowiki></code> | |||
:支持的运算符如右方表格所示,表格从上到下按运算符的计算优先顺序排列。<br /> | |||
:每个运算符的详细功能见[https://meta.wikimedia.org/wiki/Help:Calculation Help:Calculation]。<br /> | |||
:计算结果的精度和格式取决于wiki服务器的操作系统,和网站语言的数字格式。 | |||
;例子 | |||
:当用于计算布尔代数值([https://en.wikipedia.org/wiki/boolean_algebra_(logic) Boolean algebra])时,零值表示<code>false(假)</code>,任何非零值,无论正负,都表示<code>ture(真)</code>: | |||
::<code><nowiki>{{#expr: 1 and -1 }}</nowiki></code> → <code>{{#expr: 1 and -1 }}</code> | |||
::<code><nowiki>{{#expr: 1 and 0 }}</nowiki></code> → <code>{{#expr: 1 and 0 }}</code> | |||
::<code><nowiki>{{#expr: 1 or -1 }}</nowiki></code> → <code>{{#expr: 1 or -1 }}</code> | |||
::<code><nowiki>{{#expr: -1 or 0 }}</nowiki></code> → <code>{{#expr: -1 or 0 }}</code> | |||
::<code><nowiki>{{#expr: 0 or 0 }}</nowiki></code> → <code>{{#expr: 0 or 0 }}</code> | |||
:输入空的表达式会返回一个空字串。输入不正确的表达式会返回其中一个错误消息,错误可以被解析函数#iferror|iferror]]函数捕捉到: | |||
::<code><nowiki>{{#expr: }}</nowiki></code> → <code>{{#expr: }}</code> | |||
::<code><nowiki>{{#expr: 1+ }}</nowiki></code> → <code>{{#expr: 1+ }}</code> | |||
::<code><nowiki>{{#expr: 1 = }}</nowiki></code> → <code>{{#expr: 1 = }}</code> | |||
::<code><nowiki>{{#expr: 1 foo 2 }}</nowiki></code> → <code>{{#expr: 1 foo 2 }}</code> | |||
:加减运算符在数字之前与之后的意义不同,它们有可能被当作正负号,而不会被当作不正确的表达式: | |||
::<code><nowiki>{{#expr: +1 }}</nowiki></code> → <code>{{#expr: +1 }}</code> | |||
::<code><nowiki>{{#expr: -1 }}</nowiki></code> → <code>{{#expr: -1 }}</code> | |||
::<code><nowiki>{{#expr: + 1 }}</nowiki></code> → <code>{{#expr: + 1 }}</code> | |||
::<code><nowiki>{{#expr: - 1 }}</nowiki></code> → <code>{{#expr: - 1 }}</code> | |||
;<font color=red>'''注意'''</font> | |||
:如果使用魔术字的输出值,必须使用其原始格式,如:移除所有分割逗号,转换为数字。<br /> | |||
:比如<code><nowiki>{{NUMBEROFUSERS}}</nowiki></code>输出的是<code>{{NUMBEROFUSERS}}</code>,但是实际需要的是<code>{{formatnum:{{NUMBEROFUSERS}}|R}}</code>,原始格式可以用<code><nowiki>{{formatnum:{{NUMBEROFUSERS}}|R}}</nowiki></code>来得到,详见[[解析函数#formatnum|formatnum]]。例子如下: | |||
::<code><nowiki>{{#expr:{{NUMBEROFUSERS}}+100}}</nowiki></code> → <code>{{#expr:{{NUMBEROFUSERS}}+100}}</code> | |||
::<code><nowiki>{{#expr:{{formatnum:{{NUMBEROFUSERS}}|R}}+100}}</nowiki></code> → <code>{{#expr:{{formatnum:{{NUMBEROFUSERS}}|R}}+100}}</code> | |||
;<font color=red>'''注意'''</font> | |||
:运算符<code>mod</code>会在某些除数值下给出错误的结果: | |||
::<code><nowiki>{{#expr: 123 mod (2^64-1)}}</nowiki></code> → <code>{{#expr: 123 mod (2^64-1)}}</code>(返回空字串,结果本应是<code>123</code>) | |||
;补充 | |||
:若想要进行关于日期的计算(比如:将当前日期与某日期进行比较),首先应将时间转化为“1970年1月1日之后多少秒”的结构,可以使用<code><nowiki>{{#time: xNU }}</nowiki></code>来转换(详见[[解析函数#time|time]]),然后就可以把日期当作数字来进行计算和比较了。 | |||
;关于四舍五入 | |||
:将运算符<code>round</code>左边的数四舍五入,使其小数位数为<code>round</code>右边的数。 | |||
:如需进一取整(向上舍入),使用<code>ceil</code>;如需舍去取整(向下舍入),使用<code>floor</code>。 | |||
<div class="table-responsive table-wrapper"> | |||
{| class=wikitable style=width:60%; height:400px; margin-left:2em | |||
!例子 | |||
!结果 | |||
!舍入方法 | |||
|- | |||
| <code style="white-space:nowrap;"><nowiki>{{#expr:</nowiki> 1/3 round 5 }}</code> || {{#expr: 1/3 round 5 }} || 保留5位小数。舍去的部分首位数值<5,则不会进一。 | |||
|- | |||
| <code style="white-space:nowrap;"><nowiki>{{#expr: 1/6 round 5 }}</nowiki></code> || {{#expr: 1/6 round 5 }} || 保留5位小数。舍去的部分首位数值≥5,则进一。 | |||
|- | |||
| <code style="white-space:nowrap;"><nowiki>{{#expr: 8.99999/9 round 5 }}</nowiki></code> || {{#expr: 8.99999/9 round 5 }} || 同上方法,结果是进一得到的。 | |||
|- | |||
| <code style="white-space:nowrap;"><nowiki>{{#expr:</nowiki> 1234.5678 '''round -2''' }}</code> || {{#expr: 1234.567 round -2 }} || 此处保留到百位。要保留到小数点左侧,应使用负的位数。 | |||
|- | |||
| <code style="white-space:nowrap;"><nowiki>{{#expr:</nowiki> 1234.5678 '''round 2''' }}</code> || {{#expr: 1234.567 round 2 }} || 此处保留到百分位。要保留到小数点右侧,应使用正的位数。 | |||
|- | |||
| <code style="white-space:nowrap;"><nowiki>{{#expr:</nowiki> 1234.5678 round 2'''.3''' }}</code> || {{#expr: 1234.567 round 2.3 }} || 位数值如果输入了带小数的数值,小数部分不起作用。 | |||
|- | |||
| <code style="white-space:nowrap;"><nowiki>{{#expr:</nowiki> '''trunc''' 1234.5678 }}</code> || {{#expr: trunc 1234.567 }} || 保留到整数可以使用<code>trunc</code>。 | |||
|- | |||
! colspan=3 | 保留到整数的舍入规则: | |||
|- | |||
| <code style="white-space:nowrap;"><nowiki>{{#expr:</nowiki> 1/3 '''round 0''' }}</code> || {{#expr: 1/3 round 0 }} || 保留到最近的整数,向下舍入至零。 | |||
|- | |||
| <code style="white-space:nowrap;"><nowiki>{{#expr:</nowiki> 1/2 '''round 0''' }}</code> || {{#expr: 1/2 round 0 }} || 保留到最近的整数,向上舍入至一。 | |||
|- | |||
| <code style="white-space:nowrap;"><nowiki>{{#expr:</nowiki> 3/4 '''round 0''' }}</code> || {{#expr: 3/4 round 0 }} || 保留到最近的整数,向上舍入至一。 | |||
|- | |||
| <code style="white-space:nowrap;"><nowiki>{{#expr:</nowiki> -1/3 '''round 0''' }}</code> || {{#expr: -1/3 round 0 }} || 保留到最近的整数,向上舍入至零。 | |||
|- | |||
| <code style="white-space:nowrap;"><nowiki>{{#expr:</nowiki> -1/2 '''round 0''' }}</code> || {{#expr: -1/2 round 0 }} || 保留到最近的整数,向下舍入至负一。 | |||
|- | |||
| <code style="white-space:nowrap;"><nowiki>{{#expr:</nowiki> -3/4 '''round 0''' }}</code> || {{#expr: -3/4 round 0 }} || 保留到最近的整数,向下舍入至负一。 | |||
|- | |||
! colspan=3 | 使用<code>ceil</code>和<code>floor</code>时的舍入规则: | |||
|- | |||
| <code style="white-space:nowrap;"><nowiki>{{#expr:</nowiki> '''ceil('''1/3''')''' }}</code> || {{#expr: ceil(1/3) }} || 向上舍入至一。 | |||
|- | |||
| <code style="white-space:nowrap;"><nowiki>{{#expr:</nowiki> '''floor('''1/3''')''' }}</code> || {{#expr: floor(1/3) }} || 向下舍入至零。 | |||
|- | |||
| <code style="white-space:nowrap;"><nowiki>{{#expr:</nowiki> '''ceil('''-1/3''')''' }}</code> || {{#expr: ceil(-1/3) }} || 向上舍入至零。 | |||
|- | |||
| <code style="white-space:nowrap;"><nowiki>{{#expr:</nowiki> '''floor('''-1/3''')''' }}</code> || {{#expr: floor(-1/3) }} || 向下舍入至负一。 | |||
|- | |||
| <code style="white-space:nowrap;"><nowiki>{{#expr:</nowiki> '''ceil''' 1/3 }}</code> || {{#expr: ceil 1/3 }} || 没有被舍入处理,因为<code>1</code>就是整数<br /><font color=red>'''注意:'''</font>上述表达式含义为<code>'''(ceil''' 1''')'''/3</code>,而不是<code>'''ceil('''1/3''')'''</code>,应注意。 | |||
|} | |} | ||
</div> | |||
;关于字符串 | |||
:表达式只能用于数字值,不能比较字串或者字符。如需比较字串和字符,请使用[[解析函数#ifeq|ifeq]]。例子: | |||
::<code><nowiki>{{#expr: "a" = "a" }}</nowiki></code> → <code>{{#expr: "a" = "a" }}</code> | |||
::<code><nowiki>{{#expr: a = a }}</nowiki></code> → <code>{{#expr: a = a }}</code> | |||
::<code><nowiki>{{#ifeq: a | a | 1 | 0 }}</nowiki></code> → <code>{{#ifeq: a | a | 1 | 0 }}</code> | |||
===lc=== | |||
MediaWiki原生函数。<br> | |||
把输入的字串中所有字母变成小写。<br> | |||
;格式:<code><nowiki>{{lc: 字串 }}</nowiki></code> | |||
;例子:<code><nowiki>{{lc: A字串 BC }}</nowiki></code>→ <code>{{lc: A字串 BC }}</code> | |||
===lcfirst=== | |||
MediaWiki原生函数。<br> | |||
把输入的字串中第一个字母变成小写。<br> | |||
;格式:<code><nowiki>{{lcfirst: 字串 }}</nowiki></code> | |||
;例子:<code><nowiki>{{lcfirst: A字串 BC }}</nowiki></code>→ <code>{{lcfirst: A字串 BC }}</code> | |||
:<code><nowiki>{{lcfirst: 字串 BC }}</nowiki></code>→<code>{{lcfirst: 字串 BC }}</code> | |||
=== if === | |||
来自ParserFunctions。<br /> | |||
用于鉴别一个测试字串是否为空。一个只含有空白字符的字串会被判定为空。 | |||
;格式:<code><nowiki>{{#if: 测试字串 | 字串非空输出值 | 字串空(或只有空白字符)输出值 }}</nowiki></code> | |||
:<code><nowiki>{{#if: 参数1 | 参数2 | 参数3 }}</nowiki></code> | |||
;说明: | |||
:这个函数首先检查'参数1'是否为空。如果'参数1'不为空,则显示'参数2'。如果'参数1'为空或只含有空白字符(如空格,换行符等),则显示'参数3'。 | |||
;例子: | |||
:<code><nowiki>{{#if: | yes | no}}</nowiki></code> → <code>{{#if: | yes | no}}</code> | |||
:<code><nowiki>{{#if: string | yes | no}}</nowiki></code> → <code>{{#if: string | yes | no}}</code> | |||
:<code><nowiki>{{#if: | yes | no}}</nowiki></code> → <code>{{#if: | yes | no}}</code> | |||
:<code><nowiki>{{#if:</nowiki><br /><br /><br /><nowiki>| yes | no}}</nowiki></code> → <code>{{#if:| yes | no}}</code> | |||
:测试字串总是被解释为纯文本,所以数学表达式不会被鉴别。 | |||
::<code><nowiki>{{#if: 1==2 | yes | no }}</nowiki></code> → <code>{{#if: 1==2 | yes | no }}</code> | |||
::<code><nowiki>{{#if: 0 | yes | no }}</nowiki></code> → <code>{{#if: 0 | yes | no }}</code> | |||
:最后一个参数(字串空输出值)可以省略。 | |||
::<code><nowiki>{{#if: foo | yes }}</nowiki></code> → <code>{{#if: foo | yes }}</code> | |||
::<code><nowiki>{{#if: | yes }}</nowiki></code> → <code>{{#if: | yes }}</code> | |||
::<code><nowiki>{{#if: foo | | no}}</nowiki></code> → <code>{{#if: foo | | no}}</code> | |||
:这个函数可以被嵌套。嵌套时,需用完整格式的<code>#if</code>函数,替代外层<code>#if</code>函数的某个参数。最大可以嵌套七层,具体取决于网站和存储限制。 | |||
::<code><nowiki>{{#if: 测试字串1 | 字串1非空输出值 | {{#if: 测试字串2 | 字串2非空输出值 | 字串2空(或只有空白字符)输出值 }} }}</nowiki></code> | |||
:可以用一个参数当作#if函数的测试字串。必须在变量名的后面加上管道符<code>|</code>。 | |||
::<code><nowiki>{{#if:{{{1</nowiki><span style="color:red; font-weight:bold">|</span>}}}| 变量1中输入了文本 | 变量1中没有文本 }}</code> | |||
:对于在模板中的应用,更多例子可参照:[https://www.mediawiki.org/wiki/Help:Parser_functions_in_templates Help:Parser functions in templates] | |||
=== ifeq === | |||
来自ParserFunctions。<br /> | |||
用于比较两个字串是否相同。 | |||
;格式:<code><nowiki>{{#ifeq: 测试字串1 | 测试字串2 | 相同时输出值 | 不相同时输出值 }}</nowiki></code> | |||
;例子: | |||
:如果两个字串都是有效的数值,则会按照数值进行比较。 | |||
::<code><nowiki>{{#ifeq: 01 | 1 | equal | not equal}}</nowiki></code> → <code>{{#ifeq: 01 | 1 | equal | not equal}}</code> | |||
::<code><nowiki>{{#ifeq: 0 | -0 | equal | not equal}}</nowiki></code> → <code>{{#ifeq: 0 | -0 | equal | not equal}}</code> | |||
::<code><nowiki>{{#ifeq: 1e3 | 1000 | equal | not equal}}</nowiki></code> → <code>{{#ifeq: 1e3 | 1000 | equal | not equal}}</code> | |||
::<code><nowiki>{{#ifeq: {{#expr:10^3}} | 1000 | equal | not equal}}</nowiki></code> → <code>{{#ifeq: {{#expr:10^3}} | 1000 | equal | not equal}}</code> | |||
:否则会按照文本进行比较,区分大小写。 | |||
::<code><nowiki>{{#ifeq: foo | bar | equal | not equal}}</nowiki></code> → <code>{{#ifeq: foo | bar | equal | not equal}}</code> | |||
::<code><nowiki>{{#ifeq: foo | Foo | equal | not equal}}</nowiki></code> → <code>{{#ifeq: foo | Foo | equal | not equal}}</code> | |||
::<code><nowiki>{{#ifeq: "01" | "1" | equal | not equal}}</nowiki></code> → <code>{{#ifeq: "01" | "1" | equal | not equal}}</code> ''(注意与上方不带引号的区别)'' | |||
::<code><nowiki>{{#ifeq: 10^3 | 1000 | equal | not equal}}</nowiki></code> → <code>{{#ifeq: 10^3 | 1000 | equal | not equal}}</code> ''(注意与上方使用了<code>#expr</code>函数的区别)'' | |||
;<font color=red>'''注意'''</font>: | |||
:<code>#ifeq</code>和<code>#switch</code>的数值比较与使用<code>#expr</code>进行比较不同: | |||
::<code><nowiki>{{#ifeq: 12345678901234567 | 12345678901234568 | equal | not equal}}</nowiki></code> → <code>{{#ifeq: 12345678901234567 | 12345678901234568 | equal | not equal}}</code> | |||
::<code><nowiki>{{#switch: 12345678901234567 | 12345678901234568 = equal | not equal}}</nowiki></code> → <code>{{#switch: 12345678901234567 | 12345678901234568 = equal | not equal}}</code> | |||
:因为PHP以整数型比较两个数字,然而: | |||
::<code><nowiki>{{#ifexpr: 12345678901234567 = 12345678901234568 | equal | not equal}}</nowiki></code> → <code>{{#ifexpr: 12345678901234567 = 12345678901234568 | equal | not equal}}</code> | |||
:因为MediaWiki转换文本数字为浮点型,对于比较大的整数,会导致末尾被舍去。 | |||
;<font color=red>'''注意'''</font>: | |||
:在解析函数内部的标签和解析函数(如<code><nowiki></code>)会被暂时替换为一个唯一的代码。这会影响到比较结果: | |||
::<code><nowiki>{{#ifeq: <nowiki>foo</nowiki> | <nowiki>foo</nowiki> | equal | not equal}}</nowiki></code> → <code>{{#ifeq: <nowiki>foo</nowiki> | <nowiki>foo</nowiki> | equal | not equal}}</code> | |||
::<code><nowiki>{{#ifeq: <math>foo</math> | <math>foo</math> | equal | not equal}}</nowiki></code> → <code>{{#ifeq: <math>foo</math> | <math>foo</math> | equal | not equal}}</code> | |||
::<code><nowiki>{{#ifeq: {{#tag:math|foo}} | {{#tag:math|foo}} | equal | not equal}}</nowiki></code> → <code>{{#ifeq: {{#tag:math|foo}} | {{#tag:math|foo}} | equal | not equal}}</code> | |||
::<code><nowiki>{{#ifeq: [[foo]] | [[foo]] | equal | not equal}}</nowiki></code> → <code>{{#ifeq: [[foo]] | [[foo]] | equal | not equal}}</code> | |||
:如果被比较的字串 是由等价调用 含有这类标签的 '''同一'''模板 得到的,则值为真;但如果为 含有相同的这类标签的 '''两个'''模板,则值为假。 | |||
;<font color=red>'''注意'''</font>: | |||
:在用页面名变量(如:<code><nowiki>{{FULLPAGENAME}}</nowiki></code>)比较当前页面标题时,应小心。这些变量会将特殊字符转换为数字HTML实体。这会造成具有误导性的结果。比如,在一个标题为“L'Aquila”的页面上: | |||
::<code><nowiki>{{#ifeq: L'Aquila | {{FULLPAGENAME}} | equal | not equal}}</nowiki></code> → <code>{{#ifeq: L'Aquila | {{FULLPAGENAME}} | equal | not equal}}</code> | |||
:上面的结果实际是错误的。经过改进之后,现在它会返回“<code>equal</code>”。但是对于其他情况可能不会如此。如<code><nowiki>{{FULLPAGENAME}}</nowiki></code>,在部分网站,可能会将第一个字母替换为大写,可能会将所有下划线替换为空格。 | |||
:为了解决这个问题,可以在两个参数上都应用变量: | |||
::<code><nowiki>{{#ifeq: {{FULLPAGENAME: L'Aquila}} | {{FULLPAGENAME}} | equal | not equal}}</nowiki></code> → <code>equal</code> | |||
===padleft=== | |||
将参数1通过在左侧补上参数3指定的字符串(默认为0)补足到参数2指定的长度,例如 <code>{{padleft:44|3|0}}</code> 生成 044。参数3指定的字符串可能被截断以保证补足后的字符串长度满足要求。 | |||
;例子&输出 | |||
<code><nowiki>{{padleft:xyz|5}}</nowiki></code> → {{padleft:xyz|5}} | |||
<code><nowiki>{{padleft:xyz|5|_}}</nowiki></code> → {{padleft:xyz|5|_}} | |||
<code><nowiki>{{padleft:xyz|5|abc}}</nowiki></code> → {{padleft:xyz|5|abc}} | |||
<code><nowiki>{{padleft:xyz|2}}</nowiki></code> → {{padleft:xyz|2}} | |||
<code><nowiki>{{padleft:|1|xyz}}</nowiki></code> → {{padleft:|1|xyz}} | |||
=== switch === | |||
来自ParserFunctions。<br /> | |||
这个函数将一个输入值与若干个情况值对比,如果找到了相符的情况,则返回该情况下的输出字串。 | |||
;格式: | |||
<pre> | |||
{{#switch: 比较字串 | |||
| 情况字串1 = 返回结果1 | |||
| 情况字串2 = 返回结果2 | |||
| ... | |||
| 情况字串n = 返回结果n | |||
| 默认结果 | |||
}} | |||
</pre> | |||
;例子: | |||
:<code><nowiki>{{#switch: baz | foo = Foo | baz = Baz | Bar }}</nowiki></code> → <code>{{#switch: baz | foo = Foo | baz = Baz | Bar }}</code> | |||
:<code><nowiki>{{#switch: foo | foo = Foo | baz = Baz | Bar }}</nowiki></code> → <code>{{#switch: foo | foo = Foo | baz = Baz | Bar }}</code> | |||
:<code><nowiki>{{#switch: zzz | foo = Foo | baz = Baz | Bar }}</nowiki></code> → <code>{{#switch: zzz | foo = Foo | baz = Baz | Bar }}</code> | |||
:<code>#switch</code>和部分转换标签可以作用于配置文件,从而可以使不熟悉模板代码的编辑者编辑可配置元素。 | |||
;关于默认结果: | |||
:在当没有'情况字串'与'比较字串'相符时,会返回'默认结果': | |||
::<code><nowiki>{{#switch: test | foo = Foo | baz = Baz | Bar }}</nowiki></code> → <code>{{#switch: test | foo = Foo | baz = Baz | Bar }}</code> | |||
:按这个函数的句法,'默认结果'必须是最后一个参数,并且不能包含原始等号符。 | |||
::<code><nowiki>{{#switch: test | Bar | foo = Foo | baz = Baz }}</nowiki></code> → <code>{{#switch: test | Bar | foo = Foo | baz = Baz }}</code> | |||
::<code><nowiki>{{#switch: test | foo = Foo | baz = Baz | B=ar }}</nowiki></code> → <code>{{#switch: test | foo = Foo | baz = Baz | B=ar }}</code> | |||
:或者'默认结果'可以用'情况字串'<code>#default</code>来特别声明。 | |||
<pre> | |||
{{#switch: 比较字串 | |||
| 情况字串1 = 返回结果1 | |||
| 情况字串2 = 返回结果2 | |||
| ... | |||
| 情况字串n = 返回结果n | |||
| #default = 默认结果 | |||
}} | |||
</pre> | |||
:用这种方式声明的'默认结果'可以放在函数内的任何位置: | |||
::<code><nowiki>{{#switch: test | foo = Foo | #default = Bar | baz = Baz }}</nowiki></code> → <code>{{#switch: test | foo = Foo | #default = Bar | baz = Baz }}</code> | |||
:如果'默认结果'被省略,当没有相符情况时,不会返回结果: | |||
::<code><nowiki>{{#switch: test | foo = Foo | baz = Baz }}</nowiki></code> → <code>{{#switch: test | foo = Foo | baz = Baz }}</code> | |||
;一组情况的结果: | |||
:可以使用“fallthrough”值,即若干'情况字串'返回相同的'返回结果'。这能减少重复。 | |||
<pre> | |||
{{#switch: 比较字串 | |||
| 情况字串1 = 返回结果1 | |||
| 情况字串2 | |||
| 情况字串3 | |||
| 情况字串4 = 返回结果234 | |||
| 情况字串5 = 返回结果5 | |||
| 情况字串6 | |||
| 情况字串7 = 返回结果67 | |||
| #default = 默认结果 | |||
}} | |||
</pre> | |||
:在这里情况2、3、4都会返回'返回结果234',情况6、7都会返回'返回结果67'。 | |||
;关于比较: | |||
:与<code>#ifeq</code>相同,如果'比较字串'和'情况字串'都为数值,则会按照数值进行比较。以上情况外,区分大小写: | |||
::<code><nowiki>{{#switch: 0 + 1 | 1 = one | 2 = two | three}}</nowiki></code> → <code>{{#switch: 0 + 1 | 1 = one | 2 = two | three}}</code> | |||
::<code><nowiki>{{#switch: {{#expr: 0 + 1}} | 1 = one | 2 = two | three}}</nowiki></code> → <code>{{#switch: {{#expr: 0 + 1}} | 1 = one | 2 = two | three}}</code> | |||
::<code><nowiki>{{#switch: a | a = A | b = B | C}}</nowiki></code> → <code>{{#switch: a | a = A | b = B | C}}</code> | |||
::<code><nowiki>{{#switch: A | a = A | b = B | C}}</nowiki></code> → <code>{{#switch: A | a = A | b = B | C}}</code> | |||
:'情况字串'可以是空: | |||
::<code><nowiki>{{#switch: | = Nothing | foo = Foo | Something }}</nowiki></code> → <code>{{#switch: | = Nothing | foo = Foo | Something }}</code> | |||
:当出现一个相符情况后,之后的'情况字串'会被忽略: | |||
::<code><nowiki>{{#switch: b | f = Foo | b = Bar | b = Baz | }}</nowiki></code> → <code>{{#switch: b | f = Foo | b = Bar | b = Baz | }}</code> | |||
;<font color=red>'''注意'''</font>: | |||
:<code>#switch</code>和<code>#ifeq</code>的数值比较方法与表达式比较不同: | |||
::<code><nowiki>{{#switch: 12345678901234567 | 12345678901234568 = A | B}}</nowiki></code> → <code>{{#switch: 12345678901234567 | 12345678901234568 = A | B}}</code> | |||
::<code><nowiki>{{#ifexpr: 12345678901234567 = 12345678901234568 | A | B}}</nowiki></code> → <code>{{#ifexpr: 12345678901234567 = 12345678901234568 | A | B}}</code> | |||
:具体见<code>[[解析函数#ifeq|ifeq]]</code>处的第一条“注意”。 | |||
;关于原始等号符: | |||
:'情况字串'不能包含原始等号符。为了解决这个问题,创建了一个只包含一个等号符<code>=</code>的模板<code><nowiki>{{=}}</nowiki></code>。 | |||
:应用的例子: | |||
<pre> | |||
{{#switch: 1=2 | |||
| 1=2 = raw | |||
| 1<nowiki>=</nowiki>2 = nowiki | |||
| 1=2 = html | |||
| 1{{=}}2 = template | |||
| default | |||
}} | |||
</pre> → <code>{{#switch: 1=2 | |||
| 1=2 = raw | |||
| 1<nowiki>=</nowiki>2 = nowiki | |||
| 1=2 = html | |||
| 1{{=}}2 = template | |||
| default | |||
}}</code> | |||
;关于替换<code>#ifeq</code>: | |||
:<code>#switch</code>可以用来减少扩展深度。 | |||
:比如: | |||
::<code><nowiki>{{#switch:{{{1}}} |情况1=分支1 |情况2=分支2 |情况3=分支3 |分支4}}</nowiki></code> | |||
:等价于: | |||
::<code><nowiki>{{#ifeq:{{{1}}}|情况1 |分支1 |{{#ifeq:{{{1}}}|情况2 |分支2 |{{#ifeq:{{{1}}}|情况3 |分支3 |分支4}}}}}}</nowiki></code> | |||
:写成便于阅读的格式即为: | |||
<source lang="xml"> | |||
{{#ifeq:{{{1}}}|情况1 | |||
|<!--then-->分支1 | |||
|<!--else-->{{#ifeq:{{{1}}}|情况2 | |||
|<!--then-->分支2 | |||
|<!--else-->{{#ifeq:{{{1}}}|情况3 | |||
|<!--then-->分支3 | |||
|<!--else-->分支4}}}}}} | |||
</source> | |||
===uc=== | |||
MediaWiki原生函数。<br> | |||
把输入的字串中所有字母变成大写。<br> | |||
;格式:<code><nowiki>{{uc: 字串 }}</nowiki></code> | |||
;例子:<code><nowiki>{{uc: a字串 bc }}</nowiki></code>→ <code>{{uc: a字串 bc }}</code> | |||
===ucfirst=== | |||
MediaWiki原生函数。<br> | |||
把输入的字串中第一个字母变成大写。<br> | |||
;格式:<code><nowiki>{{ucfirst: 字串 }}</nowiki></code> | |||
;例子:<code><nowiki>{{ucfirst: a字串 bc }}</nowiki></code>→ <code>{{ucfirst: a字串 bc }}</code> | |||
:<code><nowiki>{{ucfirst: 字串 bc }}</nowiki></code>→<code>{{ucfirst: 字串 bc }}</code> | |||
==参考资料== | |||
2025年6月10日 (二) 00:25的最新版本
修改页面
- 如果想要编辑一个已经存在的页面,请点击到页面右上角的编辑按钮,或按下按下Alt+Shift+V进入可视化编辑项,也可以按下Alt+Shift+E进入源代码编辑框,在编辑源代码内可按下Ctrl+F,使用编辑框搜索功能定位到你要修改的位置,进行修改。
- 如果想要编辑页面内的某一个章节,可点击子标题旁的[编辑]/[编辑源代码]按钮编辑页面内的指定章节。
创建页面
- 在WIKI页面右上方或上方的搜索HAM知识库内容中输入所要创建的页面名称,此时若不存在页面名称的子页面,在搜索结果页面中会提示“找不到和查询相匹配的结果”的页面!,点击在此wiki上创建页面“***”双引号内文字进行词条创建。
- 也可以在浏览器地址栏输入https://doc.hzham.org/index.php/页面名称,再点击创建此页面按钮创建页面,在新页面右上角可点击[创建]/[创建源代码]按钮切换编辑器。
- 当某个已经存在的页面中,包含指向某个不存在的页面的链接时,你也可以通过点击这个链接来创建页面。
基础编辑
章节
| 你输入的内容 | 你看到的显示 |
|---|---|
==标题== 页面标题是页面名称,所以请从一级标题开始用起。 有四个以上标题的页面会自动生成一个目录。 这个自动生成的目录可以通过书写<code>__NOTOC__</code>来隐藏。 ===一级子标题=== 输入更多的“等于号”(=)可以创建更多下一级标题。 ====二级子标题==== 请不要跳跃标题等级,例如二级标题之下直接就是四级标题,而没有三级标题。 =====三級子标题===== |
标题页面标题是页面名称,所以请从标题开始用起。 有两个以上标题的页面会自动生成一个目录。 这个自动生成的目录可以通过书写 一级子标题输入更多的“等于号”(=)可以创建更多下一级标题。 二级子标题请不要跳跃标题等级,例如二级标题之下直接就是四级标题,而没有三级标题。 三级子标题 |
行与段落
| 你输入的内容 | 你看到的显示 |
|---|---|
另起一行并不会导致换行, 而只是会增加一个空格。 空一个空行虽然可以换行, 但其实是开始了一个新的段落。 如果你对空一个空行产生的行间距不满, 你可以空两个空行<del>,或者空更多行</del>。 |
另起一行并不会导致换行, 而只是会增加一个空格。 空一个空行虽然可以换行, 但其实是开始了一个新的段落。 如果你对空一个空行产生的行间距不满,
你可以空两个空行 |
另一种换行方式是使用<code><br/></code>标记来换行。<br/> 这样换行后的内容仍在'''同一段落'''内。 |
另一种换行方式是使用 |
* 星号(*)其实是符号列表。 ** 星号(*)会在文章内容前生成●, *** 下级星号(*)会生成缩进后的●。 **** 这很好用。 *但糟糕的是一些人通过符号列表来对文章换行。 ** '''请务必不要这么做!''' |
|
# 井号(#)是数字列表。 ## <del>曾经</del>每一行前面都有一个数字序号。 ##* 甚至可以将数字列表与符号列表混用。 ##*# <del>然并卵。</del> 同样,'''请勿用数字列表来换行和缩进!''' |
同样,请勿用数字列表来换行和缩进! |
: 冒号(:)最大的贡献是 :: 缩进! ::: 可以缩进到让你满意。 '''请用冒号(:)来缩进''',而不是用星号(*)或井号(#)! |
请用冒号(:)来缩进,而不是用星号(*)或井号(#)! |
如果一些行的开始是空格, 那么这些行将被'''预格式化''', 不会被换行。 通常是用来显示一段代码之类的东西。 也可以使用<pre>...</pre>。 |
如果一些行的开始是空格, 那么这些行将被预格式化, 不会被换行。 通常是用来显示一段代码之类的东西。 也可以使用<pre>...</pre>。 |
我以前和你一样也是个Ham ---- 直到我遇到了摩托车 |
我以前和你一样也是个Ham 直到我遇到了摩托车 |
文字样式
| 你输入的内容 | 你看到的显示 |
|---|---|
''斜体'' '''粗体''' '''''粗斜体''''' |
斜体 粗体 粗斜体 |
<b>粗体</b> <i>斜体</i> <strong>强调</strong> <s>划掉</s> <del>删除线</del> <kbd>键盘输入</kbd> <code>代码</code> <big>大字号</big> <small>小字号</small> |
粗体 斜体 强调
键盘输入
大字号 小字号 |
<nowiki>不进行''wiki''解析</nowiki> |
不进行''wiki''解析 |
<font color="red">应用CSS样式</font> |
应用CSS样式 |
<div style="text-align:left">居左</div> <div style="text-align:right">居右</div> <div style="text-align:center">居中</div> |
居左
居右
居中
|
文字修饰
文字颜色
| 你输入的内容 | 你看到的显示 |
|---|---|
|
|
大家都是火腿... |
链接
| 你输入的内容 | 你看到的显示 |
|---|---|
[[业余无线电]]是一个站内链接。 也可以修改链接的显示文字,比如[[业余无线电|业余无线电!]]。 |
业余无线电是一个站内链接。 也可以修改链接的显示文字,比如业余无线电!。 |
[[杭州丫丫名录]]是一个指向不存在页面的链接。 |
杭州丫丫名录是一个指向不存在页面的链接。 |
其他命名空间的页面的链接,比如[[特殊:上传文件]]或[[文件:Mylogo1.png]] |
其他命名空间的页面的链接,比如特殊:上传文件或 |
站外链接: * https://bg5adn.notion.site/373b70ebd9e54bb5833e2aa73eca931a * [https://bg5adn.notion.site/373b70ebd9e54bb5833e2aa73eca931a] * [https://bg5adn.notion.site/373b70ebd9e54bb5833e2aa73eca931a BG5ADN的业余无线电资料] |
站外链接: |
引用
- 说明:文章引用内容,对应内容外链。
- 用途:适用于页面部分内容引用外部内容(如一段话,引用了一篇文章),使你的文章有参考资料可查,内容更具可信度。
- 写法:<ref>[链接 链接页面名]</ref>
- 需要在页面最底部添加标题栏==外链与注释==。
插入图片
| 你输入的内容 | 你看到的显示 |
|---|---|
[[文件:Mylogo1.png]] |
- 效果说明:普通插入
| 你输入的内容 | 你看到的显示 |
|---|---|
[[文件:Mylogo1.png|50px]] |
- 效果说明:限制宽度插入
| 你输入的内容 | 你看到的显示 |
|---|---|
[[文件:Mylogo1.png|50px|center|link=Mylogo1]] [[文件:Mylogo1.png|50px|居中|link=Mylogo1]] |
|
| 你输入的内容 | 你看到的显示 |
|---|---|
[[文件:Mylogo1.png|frame|50px|right]] [[文件:Mylogo1.png|边框|50px|右]] |
![]() |
- 效果说明:加边框、居右
| 你输入的内容 | 你看到的显示 |
|---|---|
[[文件:Mylogo1.png|thumb|right|Mylogo1]] [[文件:Mylogo1.png|缩略图|右|Mylogo1]] |
![]() |
- 效果说明:加边框、居右、加入说明文字“Mylogo1”
- 你可以在源代码编辑器中蓝框区域拖入图片上传,也可在上传文件中上传文件,或者点击文件列表来查看已有的图片。
- 详细可以参考维基百科-帮助:图像和MediaWiki-帮助:图像
表格编辑
{| class="wikitable"
|-
! 杭
! 州
! 业
|-
| 余
| 无
| 线
|-
| 电
| LO
| GO
|}
提交编辑后,表格显示为:
| 杭 | 州 | 业 |
|---|---|---|
| 余 | 无 | 线 |
| 电 | LO | GO |
- 其中
{|开头,|}结尾,!为表头,|为单元格,|-表示表格行的开始。
合并单元格
- 合并行(colspan="行数"|)
{| class="wikitable"
|-
! colspan="4"|试问频点哪个热闹
|-
| 1
| 4
| 5
| 1
|}
提交编辑后,表格显示为:
| 试问频点哪个热闹 | |||
|---|---|---|---|
| 1 | 4 | 5 | 1 |
- 合并列(rowspan="列数"|)
{| class="wikitable"
|-
! rowspan="4"|试问频点哪个热闹
| 1
|-
| 4
|-
| 5
|-
| 1
|}
提交编辑后,表格显示为:
| 试问频点哪个热闹 | 1 |
|---|---|
| 4 | |
| 5 | |
| 1 |
可折叠表格
| 表格折叠使用方法 |
|---|
|
添加表格样式
{| class="wikitable" style="color:brown"
|-
! 杭
! 州
! 业
|-
| 余
| 无
| 线
|-
| 电
| LO
| GO
|}
提交编辑后,表格显示为:(更改了全体表格字体颜色)
| 杭 | 州 | 业 |
|---|---|---|
| 余 | 无 | 线 |
| 电 | LO | GO |
{| class="wikitable"
|-
! style="color:brown"|杭
! 州
! 业
|-
| 余
| 无
| 线
|-
| 电
| LO
| GO
|}
提交编辑后,表格显示为:(更改了单格字体颜色)
| 杭 | 州 | 业 |
|---|---|---|
| 余 | 无 | 线 |
| 电 | LO | GO |
- style内可填写更多CSS样式,例如background(背景色)、margin、padding(内外边距)等
引用
| 你输入的内容 | 你看到的显示 |
|---|---|
<blockquote>我朋友想看看<br/>——我朋友</blockquote> |
|
变量
前言
变量可以返回关于当前页面、W站点或日期的信息。变量的语法与模板类似。其中标记为“[高开销]”的变量会被软件记录,且在一个页面中可使用的总数会被限制。
如果某一模板名与变量名重复,软件会自动将其解释为变量(因此若要包含Template:PAGENAME,页面中需要写作{{Template:PAGENAME}})。在某些情况下,加入参数会强制软件将变量视作一个模板,如{{CURRENTDAYNAME|x}}将会包含Template:CURRENTDAYNAME,而不是变量。
语法:字符被两个大括号括起来,所有字母大写,例如{{FOO}}。用法与模板类似。
日期和时间
| 变量 | 输出 | 描述 | 版本 |
|---|---|---|---|
| 年 | |||
| {{CURRENTYEAR}} | 2026 | 年 | |
| 月 | |||
| {{CURRENTMONTH}} | 01 | 月(补足前导的0) | |
| {{CURRENTMONTH1}} | 1 | 月(无前导的0) | |
| {{CURRENTMONTHNAME}} | 1月 | 月份名称 | |
| {{CURRENTMONTHNAMEGEN}} | 1月 | 月份(属格) | |
| {{CURRENTMONTHABBREV}} | 1月 | 月份(缩写) | ≥1.5 |
| 日 | |||
| {{CURRENTDAY}} | 15 | 今天是几日(不补齐) | |
| {{CURRENTDAY2}} | 15 | 今天是几日(以0补齐) | ≥1.6 |
| {{CURRENTDOW}} | 4 | 周内一日(无填充),0(即星期日)到6(即星期六) | |
| {{CURRENTDAYNAME}} | 星期四 | 周内一日(名称) | |
| 时间 | |||
| {{CURRENTTIME}} | 11:34 | 时间(24小时制HH:mm的格式) | |
| {{CURRENTHOUR}} | 11 | 时间(24小时制含前导0的数字) | |
| 其他 | |||
| {{CURRENTWEEK}} | 3 | 第几周(数字) | |
| {{CURRENTTIMESTAMP}} | 20260115113442 | YYYYMMDDHHmmss时间戳 | ≥1.7 |
- 如下变量和上列变量功能相同,但是使用的是所在服务器的时间或者$wgLocaltimezone。
{{LOCALYEAR}}{{LOCALMONTH}}{{LOCALMONTH1}}{{LOCALMONTHNAME}}{{LOCALMONTHNAMEGEN}}{{LOCALMONTHABBREV}}{{LOCALDAY}}{{LOCALDAY2}}{{LOCALDOW}}{{LOCALDAYNAME}}{{LOCALTIME}}{{LOCALHOUR}}{{LOCALWEEK}}{{LOCALTIMESTAMP}}
统计
这些变量返回的数字往往包含分隔符(根据本地语言参数设置而可能是逗号或空格)。可以通过“:R”来返回无分隔号的数字(例如{{NUMBEROFPAGES}} → 908,684和{{NUMBEROFPAGES:R}} → 908684)。
| 变量 | 输出 | 描述 | 版本 |
|---|---|---|---|
| {{NUMBEROFPAGES}} | 163 | 维基页面数量 | |
| {{NUMBEROFARTICLES}} | 6 | 在内容名字空间中,作为条目的页面个数。 | |
| {{NUMBEROFFILES}} | 56 | 上传文件的个数。 | |
| {{NUMBEROFVIEWS}} | 页面浏览次数。通常对使用缓存的wiki无效。在当前版本无效 | 1.14 – 1.24 | |
| {{NUMBEROFUSERS}} | 54 | 注册用户数量 | |
| {{NUMBEROFADMINS}} | 13 | 管理员组用户数量 | |
| {{NUMBEROFACTIVEUSERS}} | 1 | 活跃用户总数,其标准与特殊:统计信息中的标准相同。 |
技术元数据
| 变量 | 输出 | 描述 | 版本 |
|---|---|---|---|
| 站点 | |||
| {{SITENAME}} | HAM知识库 | 维基网站的名称($wgSitename) | |
| {{SERVER}} | https://doc.hzham.org | 域名URL($wgServer) | |
| {{SERVERNAME}} | doc.hzham.org | 子域名和域名(自版本1.17后不再取决于$wgServerName)。 | |
| {{STYLEPATH}} | /skins | 样式相对路径($wgStylePath) | ≥1.16 |
| {{CURRENTVERSION}} | 1.43.1 | 此维基站点的MediaWiki版本 | ≥1.7 |
| {{CONTENTLANGUAGE}} {{CONTENTLANG}} |
zh-cn zh-cn |
默认界面语言($wgLanguageCode) | ≥1.7 |
| 页面 | |||
| {{PAGEID}} | 55 | 返回页面编号 | ≥1.20 |
| {{PAGELANGUAGE}} {{#language:{{PAGELANGUAGE}}}} |
zh-cn 中文(中国大陆) |
返回当前页面的语言。此变量返回的语言代码可使用{{#language:...}}转换为语言名。 |
≥1.29 |
| 最近一次编辑版本号 | |||
| {{REVISIONDAY}} | 10 | 最近一次编辑的日期(无前导0) | ≥1.8 |
| {{REVISIONDAY2}} | 10 | 最近一次编辑的日期(前导0) | ≥1.8 |
| {{REVISIONMONTH}} | 06 | 最近一次编辑的月份(1.17+有前导0,较早版本没有前导0) | ≥1.8 |
| {{REVISIONMONTH1}} | 6 | 最近一次编辑的月份(没有前导0) | ≥1.17 |
| {{REVISIONYEAR}} | 2025 | 最近一次编辑的年份 | ≥1.8 |
| {{REVISIONTIMESTAMP}} | 20250610002547 | 最近一次编辑的时间戳 | ≥1.8 |
| {{REVISIONSIZE}} | 48927 | 当前版本页面的大小(维基文本)。 | ≥1.22 |
页面名称
| 变量 | 对于当前页面 | 描述 | 版本 |
|---|---|---|---|
| {{FULLPAGENAME}} | 帮助:编辑教程 | 名字空间与完整页面标题(包括子页面级别)。 | |
| {{PAGENAME}} | 编辑教程 | 不包含名字空间的完整页面标题(包括子页面级别)。 | |
| {{BASEPAGENAME}} | 编辑教程 | 页面标题,不包括当前子页面标题及命名空间。 | |
| {{ROOTPAGENAME}} | 编辑教程 | 获得当前页面的根页名。 在 Help:Title/Foo/Bar 页面返回 Title。 | |
| {{SUBPAGENAME}} | 编辑教程 | 子页面标题。 在Help:Title/Foo/Bar页面返回Bar。 如果子页面不存在将会回传{{PAGENAME}}的值。 |
|
| {{SUBJECTPAGENAME}} {{ARTICLEPAGENAME}} |
帮助:编辑教程 帮助:编辑教程 |
获得该页面的完整页面名。对讨论页十分有用。 | |
| {{TALKPAGENAME}} | 帮助讨论:编辑教程 | 关联讨论页的完整页面名称 |
- 以上魔术字可以接受一个参数,用于指定特定页面,来代替要处理的当前页面设定:
- {{PAGENAME:Template:Main Page}} → Main Page
- {{PAGENAME:模板:点名简报}} → 点名简报
名字空间
| 变量 | 输出 | 描述 | 版本 |
|---|---|---|---|
| {{NAMESPACENUMBER}} | 12 | 页面所在名字空间的ID | |
| {{TALKSPACE}} | 帮助讨论 | 相关联的讨论名字空间的名称 |
- 关于名字空间详见:帮助:名字空间
其他
| 变量 | 输出 | 描述 | 版本 |
|---|---|---|---|
| {{!}} | | | 用于在模板或者是表格内插入管道符号。 |
状态开关
前言
- 状态开关:通常写成以两个下划线“__”为前后缀的大写单词,例如__FOO__。
- 状态开关可以控制页面(只要受皮肤支持)的显示方式或其他行为。它往往用于排除或加入特定的页面内容。
| 文字 | 描述 | 版本 |
|---|---|---|
| 目录 | ||
| __NOTOC__ | 隐藏目录(TOC)。 | |
| __FORCETOC__ | 强制于默认位置(第一个章节标题上方,忽略的设置)显示目录。 | |
| __TOC__ | 在魔术字的位置插入目录(忽略的设置)。如果这个魔术字在一个页面内被多次使用,目录将出现在第一个词的位置。 | |
| 编辑 | ||
| __NOEDITSECTION__ | 隐藏章节标题旁的编辑链接。这个特别有用,当章节标题在模板中被创建时,普通的编辑链接将会把用户带到编辑模板代码界面,这与用户的直觉不符。 在模板中使用它将扩充对模板嵌入页面的影响,以及任何包含在同一页面的其他模板。 | |
| __NEWSECTIONLINK__ | 在非讨论页顶端“编辑”标签右侧加入一个按钮,用于在页面结尾加入新的章节(参见在页面末尾加入新章节)。 | |
| __NONEWSECTIONLINK__ | 移除讨论页顶端“编辑”右侧的加入新章节链接。 | |
| 分类 | ||
| __NOGALLERY__ | 用于分类页面。不显示分类中所包含文件的缩略图,而以普通链接代替。 | |
| __HIDDENCAT__ | 用于分类页面。加入后此分类成为隐藏分类,将不会显示在上级分类其及成员页面的分类列表中(可以通过参数设置中的选项强制显示)。 | |
| __EXPECTUNUSEDCATEGORY__ | 在分类页面上使用,从Special:UnusedCategories中删除分类。 | |
解析函数
所有函数均适用的注意事项
以下是一个解析函数的基本格式:
{{#函数名: 参数1 | 参数2 | ... | 参数n }}
在页面中写上如此一般的代码后,后台解析页面是就会呼叫解析函数“函数名”,并传入相应的参数。如果输入的参数内同样的含有函数(或模板等需要展开运算的代码),解析器将会先运算和展开参数里的代码。这种先后次序与数学公式中的括号是同等效果,由内至外逐一展开运算。
其他注意事项:
- 某些函数对“该参数的值为空白”及“缺少该参数”的理解会有差异,导致运算处理和最终输出出现差错,需要留意该函数有没有这种设定。例如regex就有这种设定。
- 字符本身和对应的HTML实体(HTML Entity[1])不一定会受到一致的处理,甚至不会相互等于,需要留意函数是否会将输入解码或将输出编码。
- 如果函数突然出现不符合预期的输出,那很有可能是你忘记了对某些特殊字符转义。
- 参数内容的前后可以随意添加空格和换行,可以适当使用让排版更整齐易懂。
expr
| 类型 | 运算符 |
|---|---|
| 组合(括号) | ( )
|
| 数字 | 1234.5 、 e (2.718) 、 pi (3.142)
|
科学计数法(二元) e 、 正负号(一元) +,-
| |
| 一元运算符 | not ceil trunc floor abs exp ln sin cos tan acos asin atan
|
| 二元运算符 | ^
|
* / div mod
| |
+ -
| |
| 四舍五入 | round
|
| 逻辑运算符 | = != <> > < >= <=
|
and
| |
or
|
来自ParserFunctions。
用于验证一个数学表达式,并返回它的计算值。
此函数在Scribunto扩展中也可用,函数名为mw.ext.ParserFunctions.expr。
- 格式
{{#expr: 表达式 }}- 支持的运算符如右方表格所示,表格从上到下按运算符的计算优先顺序排列。
- 每个运算符的详细功能见Help:Calculation。
- 计算结果的精度和格式取决于wiki服务器的操作系统,和网站语言的数字格式。
- 例子
- 当用于计算布尔代数值(Boolean algebra)时,零值表示
false(假),任何非零值,无论正负,都表示ture(真):{{#expr: 1 and -1 }}→1{{#expr: 1 and 0 }}→0{{#expr: 1 or -1 }}→1{{#expr: -1 or 0 }}→1{{#expr: 0 or 0 }}→0
- 输入空的表达式会返回一个空字串。输入不正确的表达式会返回其中一个错误消息,错误可以被解析函数#iferror|iferror]]函数捕捉到:
{{#expr: }}→{{#expr: 1+ }}→表达式错误:缺少+的操作数。{{#expr: 1 = }}→表达式错误:缺少=的操作数。{{#expr: 1 foo 2 }}→表达式错误:无法识别词语“foo”。
- 加减运算符在数字之前与之后的意义不同,它们有可能被当作正负号,而不会被当作不正确的表达式:
{{#expr: +1 }}→1{{#expr: -1 }}→-1{{#expr: + 1 }}→1{{#expr: - 1 }}→-1
- 注意
- 如果使用魔术字的输出值,必须使用其原始格式,如:移除所有分割逗号,转换为数字。
- 比如
{{NUMBEROFUSERS}}输出的是54,但是实际需要的是54,原始格式可以用{{formatnum:{{NUMBEROFUSERS}}|R}}来得到,详见formatnum。例子如下:{{#expr:{{NUMBEROFUSERS}}+100}}→154{{#expr:{{formatnum:{{NUMBEROFUSERS}}|R}}+100}}→154
- 注意
- 运算符
mod会在某些除数值下给出错误的结果:{{#expr: 123 mod (2^64-1)}}→除以零。(返回空字串,结果本应是123)
- 补充
- 若想要进行关于日期的计算(比如:将当前日期与某日期进行比较),首先应将时间转化为“1970年1月1日之后多少秒”的结构,可以使用
{{#time: xNU }}来转换(详见time),然后就可以把日期当作数字来进行计算和比较了。 - 关于四舍五入
- 将运算符
round左边的数四舍五入,使其小数位数为round右边的数。 - 如需进一取整(向上舍入),使用
ceil;如需舍去取整(向下舍入),使用floor。
| 例子 | 结果 | 舍入方法 |
|---|---|---|
{{#expr: 1/3 round 5 }} |
0.33333 | 保留5位小数。舍去的部分首位数值<5,则不会进一。 |
{{#expr: 1/6 round 5 }} |
0.16667 | 保留5位小数。舍去的部分首位数值≥5,则进一。 |
{{#expr: 8.99999/9 round 5 }} |
1 | 同上方法,结果是进一得到的。 |
{{#expr: 1234.5678 round -2 }} |
1200 | 此处保留到百位。要保留到小数点左侧,应使用负的位数。 |
{{#expr: 1234.5678 round 2 }} |
1234.57 | 此处保留到百分位。要保留到小数点右侧,应使用正的位数。 |
{{#expr: 1234.5678 round 2.3 }} |
1234.57 | 位数值如果输入了带小数的数值,小数部分不起作用。 |
{{#expr: trunc 1234.5678 }} |
1234 | 保留到整数可以使用trunc。
|
| 保留到整数的舍入规则: | ||
{{#expr: 1/3 round 0 }} |
0 | 保留到最近的整数,向下舍入至零。 |
{{#expr: 1/2 round 0 }} |
1 | 保留到最近的整数,向上舍入至一。 |
{{#expr: 3/4 round 0 }} |
1 | 保留到最近的整数,向上舍入至一。 |
{{#expr: -1/3 round 0 }} |
-0 | 保留到最近的整数,向上舍入至零。 |
{{#expr: -1/2 round 0 }} |
-1 | 保留到最近的整数,向下舍入至负一。 |
{{#expr: -3/4 round 0 }} |
-1 | 保留到最近的整数,向下舍入至负一。 |
使用ceil和floor时的舍入规则:
| ||
{{#expr: ceil(1/3) }} |
1 | 向上舍入至一。 |
{{#expr: floor(1/3) }} |
0 | 向下舍入至零。 |
{{#expr: ceil(-1/3) }} |
-0 | 向上舍入至零。 |
{{#expr: floor(-1/3) }} |
-1 | 向下舍入至负一。 |
{{#expr: ceil 1/3 }} |
0.33333333333333 | 没有被舍入处理,因为1就是整数注意:上述表达式含义为 (ceil 1)/3,而不是ceil(1/3),应注意。
|
- 关于字符串
- 表达式只能用于数字值,不能比较字串或者字符。如需比较字串和字符,请使用ifeq。例子:
{{#expr: "a" = "a" }}→表达式错误:无法识别标点符号“"”。{{#expr: a = a }}→表达式错误:无法识别词语“a”。{{#ifeq: a | a | 1 | 0 }}→1
lc
MediaWiki原生函数。
把输入的字串中所有字母变成小写。
- 格式
{{lc: 字串 }}- 例子
{{lc: A字串 BC }}→a字串 bc
lcfirst
MediaWiki原生函数。
把输入的字串中第一个字母变成小写。
- 格式
{{lcfirst: 字串 }}- 例子
{{lcfirst: A字串 BC }}→a字串 BC{{lcfirst: 字串 BC }}→字串 BC
if
来自ParserFunctions。
用于鉴别一个测试字串是否为空。一个只含有空白字符的字串会被判定为空。
- 格式
{{#if: 测试字串 | 字串非空输出值 | 字串空(或只有空白字符)输出值 }}{{#if: 参数1 | 参数2 | 参数3 }}- 说明
- 这个函数首先检查'参数1'是否为空。如果'参数1'不为空,则显示'参数2'。如果'参数1'为空或只含有空白字符(如空格,换行符等),则显示'参数3'。
- 例子
{{#if: | yes | no}}→no{{#if: string | yes | no}}→yes{{#if: | yes | no}}→no{{#if:→
| yes | no}}no- 测试字串总是被解释为纯文本,所以数学表达式不会被鉴别。
{{#if: 1==2 | yes | no }}→yes{{#if: 0 | yes | no }}→yes
- 最后一个参数(字串空输出值)可以省略。
{{#if: foo | yes }}→yes{{#if: | yes }}→{{#if: foo | | no}}→
- 这个函数可以被嵌套。嵌套时,需用完整格式的
#if函数,替代外层#if函数的某个参数。最大可以嵌套七层,具体取决于网站和存储限制。{{#if: 测试字串1 | 字串1非空输出值 | {{#if: 测试字串2 | 字串2非空输出值 | 字串2空(或只有空白字符)输出值 }} }}
- 可以用一个参数当作#if函数的测试字串。必须在变量名的后面加上管道符
|。{{#if:{{{1|}}}| 变量1中输入了文本 | 变量1中没有文本 }}
- 对于在模板中的应用,更多例子可参照:Help:Parser functions in templates
ifeq
来自ParserFunctions。
用于比较两个字串是否相同。
- 格式
{{#ifeq: 测试字串1 | 测试字串2 | 相同时输出值 | 不相同时输出值 }}- 例子
- 如果两个字串都是有效的数值,则会按照数值进行比较。
{{#ifeq: 01 | 1 | equal | not equal}}→equal{{#ifeq: 0 | -0 | equal | not equal}}→equal{{#ifeq: 1e3 | 1000 | equal | not equal}}→equal{{#ifeq: {{#expr:10^3}} | 1000 | equal | not equal}}→equal
- 否则会按照文本进行比较,区分大小写。
{{#ifeq: foo | bar | equal | not equal}}→not equal{{#ifeq: foo | Foo | equal | not equal}}→not equal{{#ifeq: "01" | "1" | equal | not equal}}→not equal(注意与上方不带引号的区别){{#ifeq: 10^3 | 1000 | equal | not equal}}→not equal(注意与上方使用了#expr函数的区别)
- 注意
#ifeq和#switch的数值比较与使用#expr进行比较不同:{{#ifeq: 12345678901234567 | 12345678901234568 | equal | not equal}}→not equal{{#switch: 12345678901234567 | 12345678901234568 = equal | not equal}}→not equal
- 因为PHP以整数型比较两个数字,然而:
{{#ifexpr: 12345678901234567 = 12345678901234568 | equal | not equal}}→equal
- 因为MediaWiki转换文本数字为浮点型,对于比较大的整数,会导致末尾被舍去。
- 注意
- 在解析函数内部的标签和解析函数(如
<nowiki>)会被暂时替换为一个唯一的代码。这会影响到比较结果:{{#ifeq: <nowiki>foo</nowiki> | <nowiki>foo</nowiki> | equal | not equal}}→not equal{{#ifeq: <math>foo</math> | <math>foo</math> | equal | not equal}}→not equal{{#ifeq: {{#tag:math|foo}} | {{#tag:math|foo}} | equal | not equal}}→not equal{{#ifeq: [[foo]] | [[foo]] | equal | not equal}}→equal
- 如果被比较的字串 是由等价调用 含有这类标签的 同一模板 得到的,则值为真;但如果为 含有相同的这类标签的 两个模板,则值为假。
- 注意
- 在用页面名变量(如:
{{FULLPAGENAME}})比较当前页面标题时,应小心。这些变量会将特殊字符转换为数字HTML实体。这会造成具有误导性的结果。比如,在一个标题为“L'Aquila”的页面上:{{#ifeq: L'Aquila | {{FULLPAGENAME}} | equal | not equal}}→not equal
- 上面的结果实际是错误的。经过改进之后,现在它会返回“
equal”。但是对于其他情况可能不会如此。如{{FULLPAGENAME}},在部分网站,可能会将第一个字母替换为大写,可能会将所有下划线替换为空格。 - 为了解决这个问题,可以在两个参数上都应用变量:
{{#ifeq: {{FULLPAGENAME: L'Aquila}} | {{FULLPAGENAME}} | equal | not equal}}→equal
padleft
将参数1通过在左侧补上参数3指定的字符串(默认为0)补足到参数2指定的长度,例如 044 生成 044。参数3指定的字符串可能被截断以保证补足后的字符串长度满足要求。
- 例子&输出
{{padleft:xyz|5}} → 00xyz
{{padleft:xyz|5|_}} → __xyz
{{padleft:xyz|5|abc}} → abxyz
{{padleft:xyz|2}} → xyz
{{padleft:|1|xyz}} → x
switch
来自ParserFunctions。
这个函数将一个输入值与若干个情况值对比,如果找到了相符的情况,则返回该情况下的输出字串。
- 格式
{{#switch: 比较字串
| 情况字串1 = 返回结果1
| 情况字串2 = 返回结果2
| ...
| 情况字串n = 返回结果n
| 默认结果
}}
- 例子
{{#switch: baz | foo = Foo | baz = Baz | Bar }}→Baz{{#switch: foo | foo = Foo | baz = Baz | Bar }}→Foo{{#switch: zzz | foo = Foo | baz = Baz | Bar }}→Bar#switch和部分转换标签可以作用于配置文件,从而可以使不熟悉模板代码的编辑者编辑可配置元素。- 关于默认结果
- 在当没有'情况字串'与'比较字串'相符时,会返回'默认结果':
{{#switch: test | foo = Foo | baz = Baz | Bar }}→Bar
- 按这个函数的句法,'默认结果'必须是最后一个参数,并且不能包含原始等号符。
{{#switch: test | Bar | foo = Foo | baz = Baz }}→{{#switch: test | foo = Foo | baz = Baz | B=ar }}→
- 或者'默认结果'可以用'情况字串'
#default来特别声明。
{{#switch: 比较字串
| 情况字串1 = 返回结果1
| 情况字串2 = 返回结果2
| ...
| 情况字串n = 返回结果n
| #default = 默认结果
}}
- 用这种方式声明的'默认结果'可以放在函数内的任何位置:
{{#switch: test | foo = Foo | #default = Bar | baz = Baz }}→Bar
- 如果'默认结果'被省略,当没有相符情况时,不会返回结果:
{{#switch: test | foo = Foo | baz = Baz }}→
- 一组情况的结果
- 可以使用“fallthrough”值,即若干'情况字串'返回相同的'返回结果'。这能减少重复。
{{#switch: 比较字串
| 情况字串1 = 返回结果1
| 情况字串2
| 情况字串3
| 情况字串4 = 返回结果234
| 情况字串5 = 返回结果5
| 情况字串6
| 情况字串7 = 返回结果67
| #default = 默认结果
}}
- 在这里情况2、3、4都会返回'返回结果234',情况6、7都会返回'返回结果67'。
- 关于比较
- 与
#ifeq相同,如果'比较字串'和'情况字串'都为数值,则会按照数值进行比较。以上情况外,区分大小写:{{#switch: 0 + 1 | 1 = one | 2 = two | three}}→three{{#switch: {{#expr: 0 + 1}} | 1 = one | 2 = two | three}}→one{{#switch: a | a = A | b = B | C}}→A{{#switch: A | a = A | b = B | C}}→C
- '情况字串'可以是空:
{{#switch: | = Nothing | foo = Foo | Something }}→Nothing
- 当出现一个相符情况后,之后的'情况字串'会被忽略:
{{#switch: b | f = Foo | b = Bar | b = Baz | }}→Bar
- 注意
#switch和#ifeq的数值比较方法与表达式比较不同:{{#switch: 12345678901234567 | 12345678901234568 = A | B}}→B{{#ifexpr: 12345678901234567 = 12345678901234568 | A | B}}→A
- 具体见
ifeq处的第一条“注意”。 - 关于原始等号符
- '情况字串'不能包含原始等号符。为了解决这个问题,创建了一个只包含一个等号符
=的模板{{=}}。 - 应用的例子:
{{#switch: 1=2
| 1=2 = raw
| 1=2 = nowiki
| 1=2 = html
| 1{{=}}2 = template
| default
}}
→ html
- 关于替换
#ifeq #switch可以用来减少扩展深度。- 比如:
{{#switch:{{{1}}} |情况1=分支1 |情况2=分支2 |情况3=分支3 |分支4}}
- 等价于:
{{#ifeq:{{{1}}}|情况1 |分支1 |{{#ifeq:{{{1}}}|情况2 |分支2 |{{#ifeq:{{{1}}}|情况3 |分支3 |分支4}}}}}}
- 写成便于阅读的格式即为:
{{#ifeq:{{{1}}}|情况1
|<!--then-->分支1
|<!--else-->{{#ifeq:{{{1}}}|情况2
|<!--then-->分支2
|<!--else-->{{#ifeq:{{{1}}}|情况3
|<!--then-->分支3
|<!--else-->分支4}}}}}}
uc
MediaWiki原生函数。
把输入的字串中所有字母变成大写。
- 格式
{{uc: 字串 }}- 例子
{{uc: a字串 bc }}→A字串 BC
ucfirst
MediaWiki原生函数。
把输入的字串中第一个字母变成大写。
- 格式
{{ucfirst: 字串 }}- 例子
{{ucfirst: a字串 bc }}→A字串 bc{{ucfirst: 字串 bc }}→字串 bc

