#author("2020-01-08T17:58:38+09:00","","")
#author("2020-04-25T17:19:44+09:00","","")
** readingtime.inc.php [#wb4d1f1a]
|RIGHT:100|LEFT:360|c
|~サマリ|読了時間表示|
|~リビジョン|1.01|
|~対応バージョン|1.5.x|
|~リビジョン|1.02|
|~対応バージョン|1.5.2|
|~投稿者|[[M.Taniguchi]]|
|~投稿日|&new{2019-08-03 (土) 01:08:17};|


**概要 [#y55b86bf]
ユーザーがページを読むのに要するおおよその時間を表示するプラグイン。&br;
1分未満は15秒単位、1分以上60分未満は分単位、60分以上は時間と分単位で表します。

時間は、ページ内の文字数を500(変更可)で割った値を1分とします。HTMLタグ・空白・改行は数えません。
1分未満は15秒単位、1分以上60分未満は分単位、60分以上は時間と分単位で表します。~
時間は、ページ内の文字数を500(変更可)で割った値を1分とします。~
高速化のため文章以外の文字も区別せずに数えてしまうので、あくまで目安と考えてください。

&br;''出力例''

このページは約 5分 で読めます。
このページは約 5分 で読めます。


**使い方 [#kb667366]

-&readingtime;
-&readingtime([文字数][,表示文言]);
-#readingtime
-#readingtime([文字数][,表示文言])
-&readingtime();
-&readingtime([文字数][,表示文言]);

&br;''引数''
#br

-文字数   … 1分間あたりにユーザーが読める文字数。一般に400~600程度とされる(デフォルトは500)
''引数''

-文字数   … 1分間あたりにユーザーが読める文字数。日本語の場合、一般に400~600程度とされる(デフォルトは500)
-表示文言 … 出力する文字列。%TIME% が読了時間に置換される

&br;''CSS''
#br

''使用例''

 このページは約&readingtime;で読めます。

#br

''スタイル''

スキンCSSにおいて、次のセレクターで表示文言のスタイルを指定することができます。
-読了時間: .plugin-readingtime
-文言全体: .plugin-readingtime-message (※インラインでは出力されない)


**コード [#f7aeb3a2]

readingtime.inc.php~
(下記のコードをコピーして、plugin ディレクトリに readingtime.inc.php というファイル名で保存してください)

 <?php
 /*
 PukiWiki - Yet another WikiWikiWeb clone.
 readingtime.inc.php, v1.01 2019 M.Taniguchi
 readingtime.inc.php, v1.02 2019 M.Taniguchi
 License: GPL v3 or (at your option) any later version
 
 ユーザーがページを読むのに要するおおよその時間を表示するPukiWiki用プラグイン。
 ユーザーがページを読むのに要するおおよその時間を表示するプラグイン。
 
 1分未満は15秒単位、1分以上60分未満は分単位、60分以上は時間と分単位で表します。
 時間は、ページ内の文字数を500(変更可)で割った値を1分とします。HTMLタグ・空白・改行は数えません。
 時間は、ページ内の文字数を500(変更可)で割った値を1分とします。
 高速化のため文章以外の文字も区別せずに数えてしまうので、あくまで目安と考えてください。
 
 使い方:
 【使い方】
 &readingtime;
 &readingtime([文字数][,表示文言]);
 #readingtime
 #readingtime([文字数][,表示文言])
 &readingtime();
 &readingtime([文字数][,表示文言]);
 
 引数:
 文字数   … 1分間あたりにユーザーが読める文字数。一般に400~600程度とされる
 文字数   … 1分間あたりにユーザーが読める文字数。日本語の場合、一般に400~600程度とされる
 表示文言 … 出力する文字列。%TIME% が読了時間に置換される
 
 CSS:
 スキンCSSにおいて、次のセレクターで表示文言のスタイルを指定することができます。
 【使用例】
 この記事は約&readingtime;で読めます。
 
 【スタイル】
 スキンCSSにおいて、次のセレクターで表示時間および文言のスタイルを指定することができます。
 読了時間 … .plugin-readingtime
 文言全体 … .plugin-readingtime-message
 */
 
 // デフォルト文字数/分
 define('PLUGIN_READINGTIME_PERMINUTE', 500);
 
 // デフォルト表示文言
 define('PLUGIN_READINGTIME_STRING', 'このページは約&thinsp;%TIME%&thinsp;で読めます。');
 // デフォルト表示文言(インライン版)
 define('PLUGIN_READINGTIME_STRING_INLINE', '%TIME%');
 
 
 function plugin_readingtime_convert() {
 	list($perMin, $str) = func_get_args();
 	$perMin = (float)$perMin;
 
 	$time = plugin_readingtime_gettime($perMin);
 	$time = '<span class="plugin-readingtime">' . $time . '</span>';
 
 	if (!$str) $str = PLUGIN_READINGTIME_STRING;
 	$str = strip_htmltag($str);
 
 	return '<p class="plugin-readingtime-message">' . str_replace('%TIME%', $time, $str) . '</p>';
 }
 
 function plugin_readingtime_inline() {
 	list($perMin, $str) = func_get_args();
 	$perMin = (float)$perMin;
 
 	$time = plugin_readingtime_gettime($perMin);
 
 	if (!$str) $str = PLUGIN_READINGTIME_STRING_INLINE;
 	$str = strip_htmltag($str);
 
 	return '<span class="plugin-readingtime">' . str_replace('%TIME%', $time, $str) . '</span>';
 }
 
 function plugin_readingtime_gettime($perMin = PLUGIN_READINGTIME_PERMINUTE, $space = '') {
 	global $vars;
 
 	$time = null;
 
 	if (isset($vars['page'])) {
 		$page = get_source($vars['page']);
 
 		unset($page[0]);
 		$page = implode($page);
 		$page = preg_replace('(#readingtime(\([^\)]*\))*|\&readingtime(\([^\)]*\)(\{[^\}]*\})*)*;)', '', $page);
 		$page = preg_replace('(&.+;|\s|\n|\r|\t)', '', strip_htmltag(convert_html($page)));
 		$text = '';
 		foreach ($page as $row) if (strpos($row, '#') !== 0) $text .= $row;
 		$page = preg_replace('(&.+;|\s|\n|\r|\t)', '', $text);
 
 		if ($perMin <= 0) $perMin = PLUGIN_READINGTIME_PERMINUTE;
 		$time = mb_strlen($page) / $perMin;
 
 		if ($time <= 0.75) {
 			$time = (ceil($time / 0.25) * 15) . $space . '秒';
 		} else {
 			if ($time < 60) {
 				$time = ceil($time) . $space . '分';
 			} else {
 				$hour = floor($time / 60);
 				$min = floor($time % 60);
 				$time = $hour . $space . '時間' . $space . $min . $space . '分';
 				$time = number_format($hour) . $space . '時間' . $space . $min . $space . '分';
 			}
 		}
 	}
 
 	return $space . $time . $space;
 }
 ?>
 


**ライセンス [#od005e98]

GPL v3

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Site admin: PukiWiki Development Team

PukiWiki 1.5.4+ © 2001-2022 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u12. HTML convert time: 0.043 sec.

OSDN