sum.inc.php

サマリ正規表現にマッチした数値を加算する
リビジョン1.0
対応バージョン1.4.2
投稿者masahiko?
投稿日2004-05-23 (SUN) 18:39:57

概要

正規表現にマッチした数値を加算するインライン型のプラグインです。

書式

&sum([regex][,op][,page]);
  • 第一引数 regex
    • 計算対象の数値を指定する正規表現
    • 必ず数字に相当する部分を()で囲む
    • 指定しない場合は([+-]?\d+\.?\d*) ←これは区切りにカンマのない整数と小数にマッチします
  • 第二引数 op
    • 加算(sum)か平均(avg)を指定する
    • 指定しない場合はsum
  • 第三引数 page
    • 処理対象のページ名
    • 指定しない場合はそのページ

使用例

| 1| 1000円|
| 2| 200円|
| 3| 800円|
|合計| &sum((\d+)円);円|

正規表現として、"((\d+)円"を指定しないと左の欄の数字まで加算されてしまいます。

ファイル

filesum.inc.php ver.1.0 (2004/05/23)

コメント

  • sum.inc.phpによって出た数値を更にsum.inc.phpで合計、ということができないのですがやはり仕様でしょうか。sum.inc.phpで出た合計値をさらにまとめて総合計を出したいのですが…… -- S・I? 2004-12-03 (金) 11:39:54
  • コメントいただきありがとうございます。ご要望の件ですが、現在はできない仕様となっています。PHPの経験が浅いため解決策がすぐには浮かんできませんので、当分(ずっと?)このままだと思ってください。ただ、私自身もそのようなことはやりたいと思っております。 -- masahiko? 2004-12-15 (水) 19:22:21
  • 自分は、第3引数が"pagelist"の時に  get_existpages()で全てのページ名を配列$page_listに入力→foreachで$page_list各行に対し「ページ取得~正規表現に一致した物を加算」の一連の作業をさせる  といった感じに改変して使っています。無理矢理な方法なんで、正規表現をしっかりしないと無限加算に陥るおそれがありますが……。勝手に改変してすみませんm(_ _)m -- オリジナルが無ければ改変もできませんでした。感謝です。? 2005-01-02 (日) 23:08:30
  • 負の計算はどうやる? -- ちんちら? 2005-03-03 (木) 15:40:21
  • すべて引き算? -&sum(); -- 1+1? 2005-03-03 (木) 17:45:08
    • &sum((-*\d+)); と正規表現を換えれば負の整数も検査対象になります。 -- 2012-12-11 (火) 11:22:13
  • 1行に複数のデータがある場合は加算できないのでしょうか?
    |1|4|
    |2|5|
    |3|6|
    |合計| &sum((\d+));|
    とすると、最初の1+2+3の合計が出て、4,5,6は加算されませんでした。-- 2005-09-20 (火) 11:12:47
  • 1行のデータを|で区切って、それぞれ正規表現と合致するかチェックして加算するように書き換えたらうまくいきました。失礼しました。 -- 2005-09-21 (水) 15:34:12
  • 上記の使用例をそのまま使用しても結果は期待通りになりません。どうphpを書き変えたらよいでしょうか? -- Pukiwiki初心者? 2012-12-10 (月) 17:16:04
  • // ページ取得 から if ($op == "sum") { の間を次のようにすると表組みのセルをそれぞれ検査対象にします。 -- 2012-12-10 (月) 17:51:29
     // ページ取得
     $page_source = get_source($page);
     $sum = 0;
     $count = 0;
     foreach($page_source as $line) {
       // 正規表現に一致したものを加算
       $part=explode('|',$line);
       foreach($part as $dd) {
         if (mb_ereg($regex, $dd, $arg)) {
           $sum += $arg[1];
           $count++;
         }
       }
     }
     if ($op == "sum") {
  • 中身を一つ一つ追って行ったら文字化けが原因でした・・・・。失礼いたしました。 -- pukiwiki初心者? 2012-12-10 (月) 23:35:59
  • 処理対象のページ名を指定しようとしても読み込んでもらえないのですが、ページ名って[[ ]]でくくったらリンクになるものですよね?それともページ名の記載の仕方が違うののですかね?規則ってありますか? -- pukiwiki初心者? 2012-12-12 (水) 17:37:48
  • &プラグイン名(){}; の()の中で使う場合、特に指定がなければ素のページ名でないと「[[ページ名]]」という名前のページを探しに行ってしまいますよ。 -- 2012-12-13 (木) 00:34:43



添付ファイル: filesum.inc.php 2314件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2012-12-13 (木) 00:34:43
Site admin: PukiWiki Development Team

PukiWiki 1.5.2+ © 2001-2019 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u7. HTML convert time: 0.255 sec.

OSDN