Nov.18, 2015 - 08h53m12s
- カウンタリスト(晒)
管理側のグラフィックカウンタ選択リスト取得の
ソース。規定のディレクトリにカウンタのイメージを
配置すれば自動取得してリスト化してくれます。
ディレクトリの構成は…
カウンタroot_dir/カウンタdir/img0〜9.ext
…で、カウンタdirは
カウンタイメージの種類の数だけ存在します。
0〜9を指定した順番で並べたり
拡張子は問わないイカした仕様…。
メインプログラムに記述するメソッドです。
配列(カウンタdir/img0〜9.ext)をさらに
配列に格納して2次元配列を作成する処理です。
$tmp_arrは取得配列をその都度、
$loop_conterに運ぶだけなのでループする度に
配列を空にしないと正常に動作しません。
(2)引数に与えられたカウンタの値を
1文字ずつ分割して配列に格納する処理。
(3)getExtensionで取得した拡張子と(2)で分割された
数値をつなげてファイル名を作成する処理。
この子のおかげでファイルの拡張子は何でも来い。
ちなみに公開側のカウンタ表示は1次元配列で
事足りるのでgetImgCounterを使用してます。
取得して配列に格納する処理。
(5)ファイル名の後ろから数えて1番目のピリオドの
位置を取得して拡張子を切り取る処理。
もっとちゃんと
クラス化出来そうだけど
getImgCounterList以外のメソッドも
単独で使用してたりするので、まぁいいか…。
functionの寄せ集めってトコです。
次は何処をカスタムしようかなぁ… … …。
ソース。規定のディレクトリにカウンタのイメージを
配置すれば自動取得してリスト化してくれます。

ディレクトリの構成は…
カウンタroot_dir/カウンタdir/img0〜9.ext
…で、カウンタdirは
カウンタイメージの種類の数だけ存在します。
0〜9を指定した順番で並べたり
拡張子は問わないイカした仕様…。
phpソース
getImgCounterListがメインプログラムに記述するメソッドです。
<?php class Counter{ /* * $dir_path カウンタroot_dirのパス * $cnt_val カウンタの値 例)0123456789 ********************************************************************/ public function getImgCounterList($dir_path, $cnt_val){ //// dir名の取得 $tmp_dir_arr = scandir($dir_path); foreach($tmp_dir_arr as $key=>$val){ if( substr($val, 0, 1) == '.' ){ // 隠しファイルは除く unset($tmp_dir_arr[$key]); } } $dir_arr = array_values($tmp_dir_arr); // 配列の格納し直し //// カウンタリストの取得 foreach($dir_arr as $key=>$val){ $tmp_arr = array(); // 配列の初期化 ----------(1) foreach( $this->getImgCounter($dir_path.$val, $cnt_val) as $key2=>$val2 ){ /* 改行無し */ $tmp_arr[] = $dir_path.$val.'/'.$val2; } $loop_counter[] = $tmp_arr; } return $loop_counter; } /* * $dir_path カウンタdirのパス * $cnt_val カウンタの値 ********************************************************************/ public function getImgCounter($dir_path, $cnt_val){ $GF = new getFile(); //// カウンタイメージのファイル名を取得 $file_arr = $GF->getFileName($dir_path); // >> to class GetFile //// ファイルの拡張子を取得 foreach($file_arr as $key => $val){ $ext_arr[] = $GF->getExtension($val); // >> to class GetFile } //// カウンタの値のカウンタイメージのファイル名の作成 $split_counter = str_split($cnt_val); ----------(2) foreach($split_counter as $key => $val){ $loop_counter[] = $val.'.'.$ext_arr[$val]; --------(3) } return $loop_counter; } } ?>(1)getImgCounterで取得した
配列(カウンタdir/img0〜9.ext)をさらに
配列に格納して2次元配列を作成する処理です。
$tmp_arrは取得配列をその都度、
$loop_conterに運ぶだけなのでループする度に
配列を空にしないと正常に動作しません。
(2)引数に与えられたカウンタの値を
1文字ずつ分割して配列に格納する処理。
(3)getExtensionで取得した拡張子と(2)で分割された
数値をつなげてファイル名を作成する処理。
この子のおかげでファイルの拡張子は何でも来い。
ちなみに公開側のカウンタ表示は1次元配列で
事足りるのでgetImgCounterを使用してます。
<?php class GetFile{ /* * $dir_path カウンタdirのパス ********************************************************************/ public function getFileName($dir_path){ if( is_dir($dir_path) && $hd=opendir($dir_path) ){ while( ($file=readdir($hd)) !== false ){ if(substr($file, 0, 1) !='.'){ // 隠しファイルは除く $path = $path_dir.'/'.$file; if( filetype($path) == 'file' ){ ----------(4) $file_arr[] = $file; } } } } return $file_arr; } /* * $file_path カウンタイメージファイルのパス ********************************************************************/ public function getExtension($file_path){ $num = strrpos($file_path, '.'); ----------(5) $ext = mb_substr($file_path, $num+1); return $ext; } } ?>(4)カウンタdir内の通常ファイルのファイル名を
取得して配列に格納する処理。
(5)ファイル名の後ろから数えて1番目のピリオドの
位置を取得して拡張子を切り取る処理。
HTMLソース
性懲りも無く、くるりんぱ…今回は入れ子ちゃん。<html> {foreach from=$loop_counter key=key item=lpA name=lpA} <ul class='both'> <li class='float_left'><input type='radio' name='cnt' value='foo' /></li> {foreach from=$lpA key=key item=lpB name=lpB} <li class='float_left'><img src='{$lpB}' /></li> {/foreach} </ul> {/foreach} </html>もちろんcheckedの処理はしてますが割愛…。
もっとちゃんと
クラス化出来そうだけど
getImgCounterList以外のメソッドも
単独で使用してたりするので、まぁいいか…。
functionの寄せ集めってトコです。
次は何処をカスタムしようかなぁ… … …。
- posted at:
- Nov.18, 2015 - 08h53m12s
- modified:
- Apr.12, 2018 - 22h21m38s
- category:
- パソコンとプログラム
- tags:
- mLabo ソース php のざらし
- description:
- mBlog管理側のカウンタリストのソース
- trackback:
- https://mlabo1977.sakura.ne.jp/mlabo1977/tb.php/96
- recent topics
- 12.10, 2019 iPadケースゲット!!
- 12.07, 2019 晩酌コレクションvol.10
- 12.03, 2019 アボカド観察記録vol.9
- 12.02, 2019 2019年の誕生日vol.2
- 11.29, 2019 2019年の誕生日vol.1(後編)
- 11.24, 2019 同期モノ始めました(誕)
- 11.17, 2019 2019年の誕生日vol.1(前編)
- 11.11, 2019 RED WING O/H vol.3(後編)
- 11.01, 2019 さよならキーケース…
- 10.29, 2019 RED WING O/H vol.3(前編)
- 10.18, 2019 外付けHDDゲット!!
- 10.14, 2019 USBメモリゲット!!
- 09.30, 2019 パスタコレクションvol.21
- 08.06, 2019 Tile mateゲット!!
- 07.26, 2019 メーターコレクション(逃)vol.7
- 07.18, 2019 アボカド観察記録vol.8
- 07.11, 2019 パスタコレクションvol.20
- 07.09, 2019 Snow Leopard Serverゲット!!
- 06.26, 2019 晩酌コレクションvol.9
- 06.16, 2019 バッテリ交換(TW)
- relational topics
- 04.06, 2019 祝500回目
- 01.02, 2019 記事執筆記録簿(2018年度版)
- 12.28, 2018 トラックパッドO/Hvol.2
- 10.15, 2018 HP作成vol.2
- 09.27, 2018 祝100回目(2018年度版)
- 11.03, 2017 祝100回目(2017年度版)
- 09.13, 2017 祝300回目
- 01.03, 2017 記事執筆記録簿(2016年度版)
- 11.02, 2016 祝200回目
- 07.15, 2016 カレンダーの色付け始めました(華)
- 12.24, 2015 クリップアイコン始めました(落)
- 11.27, 2015 CALC des CALC
- 11.12, 2015 トラックバック(!涙)
- 11.10, 2015 TwitterOAuthで困ったこと
- 11.03, 2015 ナンバーズコレクション(1977)
- 09.30, 2015 ピックガード作成vol.2
- 06.29, 2015 ピックガード作成vol.1
- 03.27, 2015 トラックバック(涙)
- 03.26, 2015 nextの反対語
- 03.22, 2015 ブログ始めました(再)
- categories