旧RECBOXと新RECBOXでは、ファイルリストの表示項目が少し異なります。新旧切り替えできるようにしました。
旧RECBOXには「再生時間」の項目がありません。将来ファームウェアの更新で変更になる可能性はありますが、13/10/14現在のファームではそのようになっています。そこで、一部修正して、旧RECBOXにも対応するように変更しました。
新旧フォーマットを合わせるため、旧RECBOXで存在しない「再生時間」のフィールドは空白での残すようにしました。
●新旧切り替え
入力ページ(html)のほうにチェックボックスを付け、新旧を選択できるようにしました。新RECBOXのときはチェックを入れ、旧RECBOXの場合はチェックを外します。
表示側のページ(php)ではセッション変数で、チェックの状態を受け取り、ファイル情報の取り込み部分を切り替えます。
●テキストの入力ページ(get1a.html)
コードを示します。11行目にチェックボックスを追加して、7行目のフォームのPOST先を”get1a.php”に変更してあります。
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=s-jis" /> </head> <body> <form action="get1a.php" method="post"> ソース<br /> <textarea name="source" cols="100" rows="20"></textarea><br> <br /> <input type="checkbox" name="new" value="yes" checked>新RECBOX<br> <input type="submit" value="変換"> </form> </body> </html>
●変換、出力ページ(get1a.php)
コードを示します。
<?php /* RECBOX ファイル一覧ピックアップ 13/10/14 チェックボックスによる新旧切り替え */ print("<body>\n"); $ary = preg_split("/[\n]/", $_POST["source"]); // 配列に展開 $outary = array(); // 空の配列を用意 // 空行を削除 foreach ($ary as $str){ if( preg_match("/[^\s]/", $str) ) { // 空行でないとき array_push($outary, $str); // 配列に蓄積 } } $csvAry = array(); // 空の配列を用意 if( isset($_POST["new"]) ) { // チェックボックスの状態 $new = true; } else { $new = false; } // 蓄積したテキストより録画日時を頼りに録画情報抽出 $ix = 0; foreach($outary as $str) { if( preg_match("/20[0-9]{2}\/[0-9]{2}\/[0-9]{2}/", $str) ) { if( $new ) { // 新RECBOX $title = trim($outary[$ix-2]); // タイトル $dulation = trim($outary[$ix-1]); // 再生時間 $date = trim($str); // 録画日時 $size = trim($outary[$ix+1]); // サイズ } else { // 旧RECBOX $title = trim($outary[$ix-1]); // タイトル $dulation = ""; // 再生時間 $date = trim($str); // 録画日時 $size = trim($outary[$ix+1]); // サイズ } $title = preg_replace("/ +/", " ", $title); // スペースを半角に変換 // $csv = $title . "," . $dulation . "," . $date . "," . $size; // カンマ区切り $csv = $title . "\t" . $dulation . "\t" . $date . "\t" . $size; // tab区切り array_push($csvAry, $csv); } $ix++; } // タブリスト if($new) { print "<p>TAB区切り(エディタ貼り付け用) <新RECBOX></p>\n"; } else { print "<p>TAB区切り(エディタ貼り付け用) <旧RECBOX></p>\n"; } print "<pre>\n"; foreach($csvAry as $str) { print $str."\n"; } print "</pre>\n"; // テーブル if($new) { print "<p>表(表計算ソフト貼り付け用) <新RECBOX></p>\n"; } else { print "<p>表(表計算ソフト貼り付け用) <旧RECBOX></p>\n"; } print "<table border='1' cellpadding='2'>\n"; print "<tr><td>タイトル</td> <td>再生時間</td> <td>日付</td> <td>サイズ</td></tr>\n"; $ix = 0; foreach($outary as $str) { if( preg_match("/20[0-9]{2}\/[0-9]{2}\/[0-9]{2}/", $str) ) { if( $new ) { // 新RECBOX $title = trim($outary[$ix-2]); // タイトル $dulation = trim($outary[$ix-1]); // 再生時間 $date = trim($str); // 録画日時 $size = trim($outary[$ix+1]); // サイズ } else { // 旧RECBOX $title = trim($outary[$ix-1]); // タイトル $dulation = ""; // 再生時間 $date = trim($str); // 録画日時 $size = trim($outary[$ix+1]); // サイズ } $title = preg_replace("/ +/", " ", $title); // スペースを半角に変換 print "<tr>"; print "<td>" . $title . "</td>"; print "<td>" . $dulation . "</td>"; print "<td>" . $date . "</td>"; print "<td>" . $size . "</td>"; print "</tr>\n"; } $ix++; } print "</table>\n"; print "</body>\n"; ?>
23行目でチェックボックスの状態を受け取り、$newに設定しています。
33行目~と79行目~は同じ処理ですが、新、旧でピックアップする相対位置を変更しています。旧REXBOXの再生時間はブランクにしています。
そのほか、57行目~と69行目~では新旧がわかるようにタイトルを$new変数で切り替えています。