帮助:解析函数/anchorencode
anchorencode
将文本编码为HTML 锚点格式。MediaWiki原生支持。
常用于在模板中处理锚点相关参数。在创建链接时,可确保锚点被正确编码,避免因特殊字符导致链接失效。
- 官方文档:帮助:魔术字 - URL数据
语法
{{anchorencode:文本}}
- 返回值为“锚点安全格式”的字符串,适用于 HTML 元素 `id` 属性、Wiki 链接中的章节位置等。
示例
示例 | 效果 | |
---|---|---|
基本 |
|
|
部分符号被编码 |
|
|
编码锚点 | [http://mw.org/page#{{anchorencode:URL data}} 这个页面]
|
这个页面 |
需要但未编码锚点 | [http://mw.org/page#URL data 这个页面]
|
data 这个页面(解析错误) |
用于模板 | 创建锚点<span id="{{anchorencode:{{{1|}}}}}"></span>
|
<span id="URL_data"></span>
|
- 使用场景:
- 链接到页面内部或其他页面的特定章节
- 模板中处理未知或用户输入的章节名
- 避免手动编码特殊字符
- 注:
- 对一个确定的URL,手动编码锚点当然可行。因此本函数更多地用于模板中,比如处理参数中未知的锚点参数。
- 与urlencode不同:
{{anchorencode:a:b/c d}}
→ a:b/c_d(HTML 锚点编码){{urlencode:a:b/c d}}
→ a%3Ab%2Fc+d(整个 URL 或查询参数编码)
更多示例
示例 | 效果 | |
---|---|---|
链接 |
|
诶嘿 |
特殊字符 |
|
我“以前”跟你一样是一个冒险者 |
相关背景
- 锚点(fragment identifier)是 URL 井号 `#` 后的部分,用于定位网页中的某个位置。例如:
请参阅:
- MediaWiki 会自动为标题生成锚点,也可以手动为标签添加 `id`:
- 指定ID:
<span id="diandian">...</span>
- 标题:
==hello lu==
生成的HTML是:<h2><span class="mw-headline" id="hello_lu">hello lu</span></h2>
- 标题:
==点点小课堂==
生成的HTML是:<h2><span id=".E7.82.B9…….E5.A0.82"></span><span class="mw-headline" id="点点小课堂">点点小课堂</span></h2>
- 指定ID:
- 锚点改变时浏览器会滚动到对应位置,但不会重新加载页面,因此常用于精确页面跳转与导航。
底层代码
/** MediaWiki 1.37.0 CoreParserFunctions.php
* @param Parser $parser
* @param string $text.
* @return string
*/
public static function anchorencode( $parser, $text ) {
$text = $parser->killMarkers( $text );
$section = (string)substr( $parser->guessSectionNameFromWikiText( $text ), 1 );
return Sanitizer::safeEncodeAttribute( $section );
}
代码逻辑:
- 移除Strip marker(Strip marker,形如
'"`UNIQ--nowiki-FFFFFFFF-QINU`"'
)。请参考Strip marker和相关文档。 - 将文本解析为章节名
- 清理和标准化字符(移除HTML标签、粗体斜体标记、清理链接; 合并空格、下划线为一个空格; 将字符引用如  A等转换为 UTF-8 字符串)
- 安全编码为 HTML 锚点格式。此外,还替换了\n \r \t < > " { } [ ] '' ISBN RFC PMID | 和 __ 为字符引用
实际用例
- 一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时,仅供批判性参考。
- 模板:SectionTabs - 战双帕弥什
- 模板:LtStage - 明日方舟
- 模板:根器栏 - 黑神话:悟空
- 模板:L - WIKI实验室
- 模板:Anchor - 女神转生
- 模板:To Megami Tensei Wiki - 女神转生
- 模板:A - 重返未来:1999
- 模板:A - 偶像大师灰姑娘女孩
- 模板:Iconbox - 都市天际线2
- 模板:Anchor - 上古卷轴5天际
- 模板:HE - 上古卷轴5天际
- 模板:Anchor - DEADLOCK
- 模板:Anchor - Noita
- 模板:神器图鉴模板 - 第七史诗
- 模板:Factionnav - 星际迷航OL