社区文档构建进行中,欢迎编辑。社区答疑群(非官方):717421103

全站通知:

帮助:解析函数/ifeq

来自WIKI实验室WIKI_BWIKI_哔哩哔哩
跳到导航 跳到搜索


比较两个字串是否相同。

出自扩展 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: 1000|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