社区文档构建进行中,欢迎编辑。社区答疑群(非官方):717421103
帮助:解析函数/arraysearcharray
Arraysearcharray是一个解析函数。帮助:解析函数页列出了所有解析函数的说明。
arraysearcharray
数组筛选出自扩展 Arrays BWIKI和各大Wiki平台广泛使用此扩展。<br>在遥远的未来,它可能与Mediawiki新的并行解析器不兼容,请参阅扩展主页了解更多信息。。
创建一个新数组,包括指定数组中所有符合条件的元素。搜索条件支持正则表达式。
支持指定搜索起始位置和最大结果数量。当搜索条件是正则时,可以额外指定结果的转换规则。
语法
{{#arraysearcharray:新数组名|原数组名|搜索条件|起始索引|限制数量|转换规则}}
- 新数组名: 将用于保存筛选结果。
- 原数组名: 目标数组。
- 搜索条件: 正则表达式或字符串搜索值。
- 起始索引: 从目标数组的指定位置开始搜索。
- 限制数量: 限制返回结果的数量。不限制可以留空或填-1。
- 转换规则: 可选参数,对搜索结果进行转换,如果搜索值是正则表达式,transform 可以包含 $n,其中 n 是正则表达式结果中的变量。
示例
定义一个数组a
为:{{#arraydefine:a|apple, bule1, fly, add1,,,, wiki}}
= apple、bule1、fly、add1、、、、wiki
将所有a开头的值存入x | {{#arraysearcharray:x|a|/^a.+/ }} -> apple、add1
|
a开头,从第2项开始 | {{#arraysearcharray:x|a|/^a.+/ | 2}} -> add1
|
a开头,仅限1个 | {{#arraysearcharray:x|a|/^a.+/ | 0 | 1}} -> apple
|
将数字结尾的值存入x | {{#arraysearcharray:x|a|/^.*?(\d+)$/}} -> bule1、add1
|
数字结尾,调整格式 | {{#arraysearcharray:x|a|/^.*?(\d+)$/||| '''pre-$0''' }} -> pre-bule1、pre-add1
|
删除空值 | {{#arraysearcharray:a|a|/\S+/}} -> apple、bule1、fly、add1、wiki
|
底层代码
代码逻辑:
- 解析参数,包括原数组 ID、新数组 ID、搜索值、起始索引、限制数量和转换规则。
- 验证索引是否有效,获取原数组,并创建新数组。
- 对搜索值进行正则表达式验证,如果不是有效的正则表达式,则转换为匹配完整字符串的正则表达式。
- 遍历原数组,对每个值进行搜索匹配,如果找到匹配项,根据需要进行转换(基于PHP的preg_replace),并将匹配结果存入新数组中,直到达到限制数量或搜索完整个数组。
- 保存新数组。
实际用例
- 一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时,仅供批判性参考。
- 模板:舰船解锁或120级总属性表 - 碧蓝航线
- 模板:舰队科技总属性表 - 碧蓝航线
- 模板:正则分割 - 三国杀
- 模板:技能来源/行 - 白荆回廊
- 模板:搜索公式 - 戴森球计划
- 模板:物品 - 戴森球计划
- 模板:相关公式 - 戴森球计划
- 模板:读取服装数据 - 克鲁赛德战记
- 模板:模板代码框 - 克鲁赛德战记
- 模板:取勇士的城镇对话 - 克鲁赛德战记
- 模板:取勇士翻译数据 - 克鲁赛德战记
- 模板:取勇士翻译数据按职业 - 克鲁赛德战记
- 模板:角色图鉴/突破 - 航海王:梦想指针
- 模板:特训 - 航海王:梦想指针
- 模板:特训/页 - 航海王:梦想指针
- 模板:主动 - 小小航海士
- 模板:兵种2 - 雾境序列
- 模板:共鸣 - 雾境序列
- 模板:共鸣2 - 雾境序列
- 模板:角色 - 雾境序列
- 模板:特性 - 雾境序列
- 模板:特性2 - 雾境序列