Tools 是非官方社区Wiki。社区文档正在编写中,欢迎参与。 Wiki编辑答疑群:717421103
版本250722.2
全站通知:

帮助:解析函数/if

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

if是一个解析函数。帮助:解析函数页列出了所有解析函数的说明。

if

条件分支函数。出自扩展 ParserFunctions

根据条件字符串是否为空(含空白)返回不同值。

语法

{{#if: 条件 | 非空输出值 | 空输出值 }}

  • 条件:要检查的wikitext(自动去除首尾空白)
  • 非空输出值:当测试字串非空时输出的内容
  • 空输出值(可选):当测试字串为空时输出的内容,默认为空字符串

示例

  • 基本用法 {{#if: 文本 | 有内容 | 无内容}} → 有内容
  • 空白处理 {{#if: | 有内容 | 无内容}} → 无内容
  • 省略第三个参数 {{#if: | 有内容}} → (无输出)
  • 模板变量检测 {{#if:{{{参数|}}} | 参数已填写 | 参数为空}}

底层代码

来自MediaWiki及其扩展的源代码,运行在服务端。此处仅供快速查阅,便于更充分的挖掘其"特性"。

/** mediawiki-extensions-ParserFunctions-REL1_37\includes\ParserFunctions.php
 * {{#if: test string | value if test string is not empty | value if test string is empty }}
 *
 * @link https://www.mediawiki.org/wiki/Help:Extension:ParserFunctions##if
 *
 * @param Parser $parser
 * @param PPFrame $frame
 * @param array $args
 * @return string
 */
public static function if( Parser $parser, PPFrame $frame, array $args ) {
	$test = isset( $args[0] ) ? trim( $frame->expand( $args[0] ) ) : '';
	if ( $test !== '' ) {
		return isset( $args[1] ) ? trim( $frame->expand( $args[1] ) ) : '';
	} else {
		return isset( $args[2] ) ? trim( $frame->expand( $args[2] ) ) : '';
	}
}
代码逻辑:
  • 先展开并去除测试字串首尾空白(trim处理)
  • 检查处理后的字符串是否为空,决定使用哪个参数作为返回值
  • 返回值wikitext会被再次展开并去除首尾空白

实际用例

一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时仅供批判性参考
碧蓝航线 - blhx

原神 - ys

战双帕弥什 - zspms

明日方舟 - arknights

恋与深空 - lysk

崩坏:星穹铁道 - sr

代号鸢 - yuan

赛马娘 - umamusume

第五人格 - dwrg

坎特伯雷公主与骑士唤醒冠军之剑的奇幻冒险 - gt

黑神话:悟空 - wukong

WIKI实验室 - tools