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

帮助:解析函数/len

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

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

len

计算字符串长度。出自扩展 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.”

获取wikitext解析后的字符数量,支持多字节字符计算。

语法

{{#len: 字符串 }}

  • 字符串(可选):需要计算长度的文本内容,留空时返回0

函数计算时会自动忽略文本首尾空格,但保留中间空格和换行符。HTML实体按源码形式计算长度。

示例

  • 基础计算 {{#len: Žmržlina九 }} → 9
  • 基础计算 {{#len: 张王李赵1234 }} → 8
  • HTML实体 {{#len:   }} → 5
  • 会被替换为解析标记(Strip marker)的标签
    • {{#len: <a>Hello</a>tt }} → 2
    • {{#len: <gallery>Hello</gallery>tt }} → 2
    • {{#len: <ref>Hello</ref>tt }} → 2
  • 直接渲染的标签
    • {{#len: <div>Hello</div>tt }} → 18
    • {{#len: <span>Hello</span>tt }} → 20


底层代码

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

public static function runLen( Parser $parser, $inStr = '' ) {
	$inStr = $parser->killMarkers( (string)$inStr );
	return mb_strlen( $inStr );
}
代码逻辑:
  • 首先清除字符串中的解析标记(Strip marker
  • 使用PHP支持多字节的字符串长度计算函数 mb_strlen 计算精确字符数

实际用例

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

明日方舟 - arknights

恋与深空 - lysk

崩坏:星穹铁道 - sr

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

黑神话:悟空 - wukong

白荆回廊 - bjhl

地下城堡3 - dxcb3

铃兰之剑 - llzj

天地劫 - tdj

剑网3 - jx3

洛克王国:手游 - rocom

我的世界地下城 - mcd

斯普拉遁3 - spld3

环行旅舍 - kelaiyinshe

失落的龙约 - sldly

妃十三学园 - alterna

神代梦华谭 - sdmht

《逃离塔科夫》官方 Wiki(镜像) - eft

Chronicon - chronicon

  1. Hello