社区文档构建进行中,欢迎编辑。社区答疑群(非官方):717421103,点点小课堂(腾讯会议):5696651544
全站通知:
帮助:解析函数/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: 01 | 1 | equal | not 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: foo | bar | equal | not equal }} →
- 注意
#ifeq
和#switch
的数值比较与使用#expr
进行比较不同:- {{#ifeq: 12345678901234567 | 12345678901234568 | equal | not equal }} →
not equal
- {{#switch: 12345678901234567 | 12345678901234568 = equal | not equal }} →
not equal
- {{#ifeq: 12345678901234567 | 12345678901234568 | equal | not equal }} →
- 因为PHP以整数型比较两个数字,然而:
- {{#ifexpr: 12345678901234567 = 12345678901234568 | equal | not equal }} →
equal
- {{#ifexpr: 12345678901234567 = 12345678901234568 | equal | not 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
- {{#ifeq: <nowiki>foo</nowiki> | <nowiki>foo</nowiki> | equal | not equal }} →
- 如果被比较的字串 是由等价调用 含有这类标签的 同一模板 得到的,则值为真;但如果为 含有相同的这类标签的 两个模板,则值为假。
- 注意
- 在用页面名变量(如:{{FULLPAGENAME}})比较当前页面标题时,应小心。这些变量会将特殊字符转换为数字HTML实体。这会造成具有误导性的结果。比如,在一个标题为“L'Aquila”的页面上:
- {{#ifeq: L'Aquila | {{FULLPAGENAME}} | equal | not equal }} →
not equal
- {{#ifeq: L'Aquila | {{FULLPAGENAME}} | equal | not equal }} →
- 上面的结果实际是错误的。经过改进之后,现在它会返回“
equal
”。但是对于其他情况可能不会如此。如{{FULLPAGENAME}},在部分网站,可能会将第一个字母替换为大写,可能会将所有下划线替换为空格。 - 为了解决这个问题,可以在两个参数上都应用变量:
- {{#ifeq: {{FULLPAGENAME: L'Aquila}} | {{FULLPAGENAME}} | equal | not equal }} →
equal
- {{#ifeq: {{FULLPAGENAME: L'Aquila}} | {{FULLPAGENAME}} | equal | not equal }} →