社区文档构建进行中,欢迎编辑。社区答疑群(非官方):717421103
全站通知:
帮助:解析函数/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: 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