社区文档构建中,欢迎进行编辑。社区答疑群(非官方):717421103,点点小课堂(腾讯会议):5696651544

全站通知:

帮助:解析函数/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