• 欢迎来到THBWiki!如果您是第一次来到这里,请点击右上角注册一个帐户
  • 有任何意见、建议、求助、反馈都可以在 讨论板 提出
  • THBWiki以专业性和准确性为目标,如果你发现了任何确定的错误或疏漏,可在登录后直接进行改正

帮助:时长扩展

来自THBWiki
跳到导航 跳到搜索
本页是THBWiki的编辑帮助文档

时长扩展是一个提供时长显示、格式化及运算功能的Mediawiki插件,在有SMW(1.9或以上)的环境下,还可以定义时长类型以储存时长信息。然后还把链接属性类型货币扩展的代码十分随便地放了进去,两个SMW类型都不能直接运行,都必须手动修改一下部分的SMW代码。

安装

  1. 你需要最新版本(1.4.1)的DurationExtension.zip
  2. 解压到extensions目录下。
  3. LocalSettings.php末尾加上require_once( "$IP/extensions/DurationExtension/DurationExtension.php" );
  4. 如要使用SMW类型,需要修改几个地方,详见SMW安装
  5. 安装完成。

调用函数

durformat

转换时长格式,具体可用格式为:

  • $O,以小时为单位的时长
  • $I,以分钟为单位的时长
  • $E,以秒为单位的时长
  • $i,以分钟为单位的时长(向下取整)
  • $e,以秒为单位的时长(向下取整)
  • $H,时长的小时部分(前导零)
  • $M,时长的分钟部分(前导零)
  • $S,时长的秒部分(前导零)
  • $D,时长的小数部分,唯存在时才显示小数点,可能会返回空值所以在某些格式中不能单独使用
  • $h,时长的小时部分
  • $m,时长的分钟部分
  • $s,时长的秒部分
  • $d,时长的小数部分,取整并后导零至四位
格式
{{#durformat: 时长字串 | 显示格式(默认为MEDIAWIKI) }}
例子
{{#durformat:01:23:45.678|SHORT}}83:45
{{#durformat:12:34:56.789|LONG}}01:23:45.0000
{{#durformat:01:23:45.678|$h小时$m分钟}}1小时23分钟
{{#durformat:12:34:56.789|$E秒}}5025秒

duralter

时长四则运算,具体可用显示格式可以参照#durformat

格式
{{#duralter: 时长字串1 | 时长字串2 | 模式 | 显示格式 }}

模式可以是+、-、*或/。

例子
{{#duralter:01:23:45.678|09:87.65|-|MEDIAWIKI}}01:13:18
{{#duralter:03:15.05|3|*|SHORT}}09:45
{{#duralter:10:00|3:00|/|PLAIN}}3.333333

dursum

时长加总,具体可用显示格式可以参照#durformat

格式
{{#dursum: 时长字串列表 | 分隔符(默认为,) | 显示格式 }}
例子
{{#dursum:0:1,2:0,3:40,0:40,5:6,6:02,4:37,2:28,1:09:04}}01:33:38

durage

计算年龄。

格式
{{#durage: 生日日期(会被自动当成UTC时间,需要设定时区时必须加上) | 当前时区(默认为UTC) }}
例子
{{#durage:1977-03-18 +0900|Asia/Shanghai}}47

durnow

调用PHP函数microtime,返回当前Unix时间戳和微秒数。

格式
{{#durnow:}}
例子
{{#durnow:}}1713241858.1711

redititle

显示重定向到该页面的标题。

格式
{{#redititle: 页面名称(默认为本页) | 分隔符(默认为,) | 模式 }}

模式可以link、strip和self,用空格分隔,link会生成链接,strip会把完全被原标题包含的标题去掉,self会显示原页面标题。

例子
{{#redititle:Comic Market|,}}Comiket,Comike,CM,コミックマーケット,コミケット,コミケ,コミ
{{#redititle:Comic Market|,|link strip self}}Comic MarketComiketComikeCMコミックマーケットコミケットコミケコミ

convertspec

把不适合作为标题的字符替换成对应的全形字符

格式
{{#convertspec: 字串 }}
例子
{{#convertspec:0#1<2>3[4]5{{!}}6{7}8:9}}0#1<2>3[4]5|6{7}8:9

inoutro

若字串为空,显示默认值,否则显示前缀、字串和后缀。

格式
{{#inoutro: 字串 | 前缀 | 后缀 | 默认值 }}
例子
{{#inoutro:字串|前缀|后缀|默认值}}前缀字串后缀
{{#inoutro:|前缀|后缀|默认值}}默认值

addlink

简单分析输入的字串,根据字串的内容生成内链或外链。

格式
{{#addlink: 字串 }}
例子
{{#addlink:沙盒}}沙盒
{{#addlink:[沙盒]}}沙盒
{{#addlink:[[沙盒]]}}沙盒
{{#addlink:https://thwiki.cc/ THBWiki}}THBWiki
{{#addlink:[[https://thwiki.cc/ THBWiki]]}}THBWiki

htmlencode

对字串进行HTML编码,内部调用了wfEscapeWikiText函数,和后面带e的原生函数(如pagenamee)调用的是同一个函数。效果比htmlspecialchars复杂,从wfEscapeWikiText的原代码中可以看到替换了什么字,做了什么处理。

function wfEscapeWikiText( $text ) {
	static $repl = null, $repl2 = null;
	if ( $repl === null ) {
		$repl = array(
			'"' => '&#34;', '&' => '&#38;', "'" => '&#39;', '<' => '&#60;',
			'=' => '&#61;', '>' => '&#62;', '[' => '&#91;', ']' => '&#93;',
			'{' => '&#123;', '|' => '&#124;', '}' => '&#125;', ';' => '&#59;',
			"\n#" => "\n&#35;", "\r#" => "\r&#35;",
			"\n*" => "\n&#42;", "\r*" => "\r&#42;",
			"\n:" => "\n&#58;", "\r:" => "\r&#58;",
			"\n " => "\n&#32;", "\r " => "\r&#32;",
			"\n\n" => "\n&#10;", "\r\n" => "&#13;\n",
			"\n\r" => "\n&#13;", "\r\r" => "\r&#13;",
			"\n\t" => "\n&#9;", "\r\t" => "\r&#9;", // "\n\t\n" is treated like "\n\n"
			"\n----" => "\n&#45;---", "\r----" => "\r&#45;---",
			'__' => '_&#95;', '://' => '&#58;//',
		);

		// We have to catch everything "\s" matches in PCRE
		foreach ( array( 'ISBN', 'RFC', 'PMID' ) as $magic ) {
			$repl["$magic "] = "$magic&#32;";
			$repl["$magic\t"] = "$magic&#9;";
			$repl["$magic\r"] = "$magic&#13;";
			$repl["$magic\n"] = "$magic&#10;";
			$repl["$magic\f"] = "$magic&#12;";
		}

		// And handle protocols that don't use "://"
		global $wgUrlProtocols;
		$repl2 = array();
		foreach ( $wgUrlProtocols as $prot ) {
			if ( substr( $prot, -1 ) === ':' ) {
				$repl2[] = preg_quote( substr( $prot, 0, -1 ), '/' );
			}
		}
		$repl2 = $repl2 ? '/\b(' . join( '|', $repl2 ) . '):/i' : '/^(?!)/';
	}
	$text = substr( strtr( "\n$text", $repl ), 1 );
	$text = preg_replace( $repl2, '$1&#58;', $text );
	return $text;
}
格式
{{#htmlencode: 字串 }}

htmldecode

对字串进行HTML解码,内部调用了html_entity_decode函数,FLAG使用了ENT_QUOTES | ENT_XML1

格式
{{#htmldecode: 字串 }}

urlencodequery

对URL Query字串进行URL编码,编码时符合Query结构的“&”和“=”不会被编码。

格式
{{#urlencodequery: 字串 }}
例子
{{#urlencodequery: a=灵梦&b=魔理沙 }}a=%E7%81%B5%E6%A2%A6&b=%E9%AD%94%E7%90%86%E6%B2%99
{{#urlencodequery: circle==NeutraL=&year=2010 }}circle=%3DNeutraL%3D&year=2010
{{#urlencodequery: circle=Azure&Sands&year=2010 }}circle=Azure%26Sands&year=2010

特殊属性:处理时间

储存计算页面所耗费的CPU时间。

调用
{{#show:{{FULLPAGENAME}}|?处理时间}} -> (对首次建立的页面无效,需刷新缓存一次)
属性页面
属性:处理时间
首500位总处理时间
0
首5500位总处理时间
00:00
耗时二十强
完整排行
查询表格