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

全站通知:

帮助:解析函数/count

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

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

count

统计指定字符串的出现次数。出自扩展 ParserFunctions 的String functions大规模使用时性能低下,推荐使用Lua模块。请参考扩展置顶警告MediaWiki代码库 r51497中的暴论“parsers in the ugliest, most inefficient programming language known to man: MediaWiki wikitext with ParserFunctions.”、“WARNING: enabling this may have an adverse impact on the sanity of your users.”

涉及复杂字符串处理的需求,更推荐使用Lua模块。

语法

{{#count:文本|目标}}

  • 文本: 字符串,要在其中搜索。
  • 目标: 字符串,搜索目标。

其结果是文本目标的出现次数,一个整数。

示例

  • {{#count:aa bb cc dd aa cc dd|aa}} → 2
  • {{#count:aa bb cc dd dd}} → 4 (默认搜索空格)

底层代码

/**
 * {{#count: string | substr }}
 *
 * Returns number of occurrences of "substr" in "string".
 *
 * Note: If "substr" is empty, a single space is used.
 *
 * @param Parser $parser
 * @param string $inStr
 * @param string $inSubStr
 * @return int|string
 */
public static function runCount( Parser $parser, $inStr = '', $inSubStr = '' ) {
	$inStr = $parser->killMarkers( (string)$inStr );
	$inSubStr = $parser->killMarkers( (string)$inSubStr );

	if ( !self::checkLength( $inStr ) ||
		!self::checkLength( $inSubStr ) ) {
		return self::tooLongError();
	}

	if ( $inSubStr === '' ) {
		$inSubStr = ' ';
	}

	$result = mb_substr_count( $inStr, $inSubStr );

	return $result;
}
代码逻辑:
  • 预处理参数
  • 设置查找目标(inSubStr)的默认值是空格
  • 使用PHP函数 mb_substr_count 统计目标字符串出现的次数

实际用例

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